+# 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.0alpha3/UPGRADING
# TODO 5.6:
# - enable --with-fpm-systemd, but ensure it checks for sd_booted()
-# - build with system libgd 2.1, see 73c5128
# TODO 5.4:
# - update imap annotations patch (needs api porting)
# - update imap myrights patch (needs api porting)
# standard
#
# Conditional build:
+# - 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 default_php # use this PHP as default PHP in distro
%bcond_with gcov # Enable Code coverage reporting
-%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_without kerberos5 # without Kerberos5 support
-%bcond_with mm # without mm support for session storage
-%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 system_gd # with system gd (imageantialias function is missing then)
-%bcond_with system_libzip # with system libzip (reported broken currently)
%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_without webp # Without WebP support in GD extension (imagecreatefromwebp)
%bcond_with zts # Zend Thread Safety
# - SAPI
%bcond_without apache2 # disable building Apache 2.x SAPI
%bcond_without json # without json extension module
%bcond_without ldap # without LDAP extension module
%bcond_without mbstring # without mbstring extension module
-%bcond_without mcrypt # without mbcrypt extension module
%bcond_without mhash # without mhash extension (supported by hash extension)
%bcond_without mysqli # without mysqli support (Requires mysql >= 4.1)
%bcond_without mysqlnd # without mysqlnd support in mysql related extensions
%bcond_without recode # without recode extension module
%bcond_without session # without session extension module
%bcond_without snmp # without SNMP extension module
+%bcond_without sodium # without sodium extension module
%bcond_without sqlite2 # without SQLite extension module
%bcond_without sqlite3 # without SQLite3 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 xsl # without xsl 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
%define apxs2 /usr/sbin/apxs
%undefine with_litespeed
%endif
+%if %{with default_php}
+%undefine with_alternatives
+%endif
+
# mm is not thread safe
%if %{with zts}
%undefine with_mm
%undefine with_filter
%endif
+%define subver RC6
%define orgname php
-%define ver_suffix 70
+%define ver_suffix 72
%define php_suffix %{!?with_default_php:%{ver_suffix}}
Summary: PHP: Hypertext Preprocessor
Summary(fr.UTF-8): Le langage de script embarque-HTML PHP
Summary(ru.UTF-8): PHP Версии 7 - язык препроцессирования HTML-файлов, выполняемый на сервере
Summary(uk.UTF-8): PHP Версії 7 - мова препроцесування HTML-файлів, виконувана на сервері
Name: %{orgname}%{php_suffix}
-Version: 7.0.11
-Release: 1
+Version: 7.2.0
+Release: 2
Epoch: 4
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
# TSRM is licensed under BSD
License: PHP 3.01 and Zend and BSD
Group: Libraries
-Source0: http://php.net/distributions/%{orgname}-%{version}.tar.xz
-# Source0-md5: 9a6013a5e9f258bbfb62ae5ac66b72da
+#Source0: https://php.net/distributions/%{orgname}-%{version}.tar.xz
+#Source0: https://downloads.php.net/~remi/php-%{version}%{subver}.tar.xz
+Source0: https://downloads.php.net/~pollita/php-%{version}%{subver}.tar.xz
+# Source0-md5: 43244f99613c6dc51a532b802cea17a8
Source2: %{orgname}-mod_php.conf
Source3: %{orgname}-cgi-fcgi.ini
Source4: %{orgname}-apache.ini
Patch29: %{orgname}-fcgi-graceful.patch
Patch31: %{orgname}-fcgi-error_log-no-newlines.patch
Patch34: %{orgname}-libtool.patch
-#Patch36: %{orgname}-mysql-charsetphpini.patch
-#Patch37: %{orgname}-mysqli-charsetphpini.patch
-#Patch38: %{orgname}-pdo_mysql-charsetphpini.patch
Patch39: %{orgname}-use-prog_sendmail.patch
Patch41: %{orgname}-fpm-config.patch
Patch42: %{orgname}-fpm-shared.patch
Patch44: %{orgname}-include_path.patch
Patch45: %{orgname}-imap-annotations.patch
Patch46: %{orgname}-imap-myrights.patch
-Patch47: suhosin.patch
Patch50: extension-shared-optional-dep.patch
Patch51: spl-shared.patch
Patch52: pcre-shared.patch
Patch55: bug-52078-fileinode.patch
Patch59: %{orgname}-systzdata.patch
Patch60: %{orgname}-oracle-instantclient.patch
-Patch62: mcrypt-libs.patch
-Patch65: system-libzip.patch
Patch66: php-db.patch
Patch67: mysql-lib-ver-mismatch.patch
# https://bugs.php.net/bug.php?id=68344
Patch68: php-mysql-ssl-context.patch
-Patch69: fpm-conf-split.patch
Patch70: mysqlnd-ssl.patch
Patch71: libdb-info.patch
Patch72: phar-hash-shared.patch
BuildRequires: elfutils-devel
%{?with_enchant:BuildRequires: enchant-devel >= 1.1.3}
%{?with_kerberos5:BuildRequires: heimdal-devel}
-%{?with_fpm:BuildRequires: libapparmor-devel}
-%{?with_system_libzip:BuildRequires: libzip-devel >= 0.10.1-2}
-%{!?with_mysqlnd:BuildRequires: mysql-devel}
-BuildRequires: pkgconfig
-BuildRequires: sed >= 4.0
+%{?with_argon2:BuildRequires: libargon2-devel >= 20161029}
+%{?with_sodium:BuildRequires: libsodium-devel >= 1.0.8}
%if %{with pdo_dblib}
BuildRequires: freetds-devel >= 0.82
%endif
BuildRequires: gdbm-devel
BuildRequires: gmp-devel >= 4.2
%{?with_imap:BuildRequires: imap-devel >= 1:2007e-2}
+%{?with_gcov:BuildRequires: lcov}
+%{?with_fpm:BuildRequires: libapparmor-devel}
%{?with_intl:BuildRequires: libicu-devel >= 4.4}
BuildRequires: libjpeg-devel
BuildRequires: libltdl-devel >= 1.4
-BuildRequires: libmcrypt-devel >= 2.5.6
BuildRequires: libpng-devel >= 1.0.8
%{?with_intl:BuildRequires: libstdc++-devel}
%{?with_webp:BuildRequires: libwebp-devel}
-BuildRequires: tokyocabinet-devel
%if "%{pld_release}" != "ac"
BuildRequires: libtool >= 2:2.4.6
%else
BuildRequires: libtool >= 1.4.3
%endif
BuildRequires: libxml2-devel >= 1:2.7.6-4
-BuildRequires: libxslt-devel >= 1.1.0
+%{?with_xsl:BuildRequires: libxslt-devel >= 1.1.0}
+%{?with_system_libzip:BuildRequires: libzip-devel >= 1.2.0}
+%{?with_snmp:%{?with_tests:BuildRequires: mibs-net-snmp}}
%{?with_mm:BuildRequires: mm-devel >= 1.3.0}
+%{!?with_mysqli:BuildRequires: mysql-devel >= 4.1.13}
+%{!?with_pdo_mysql:BuildRequires: mysql-devel}
+%{?with_snmp:BuildRequires: net-snmp-devel >= 5.3}
%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0}
%if %{with openssl} || %{with ldap}
-BuildRequires: openssl-devel >= 0.9.8
+BuildRequires: openssl-devel >= 1.0.1
%endif
-%{?with_gcov:BuildRequires: lcov}
-%{?with_snmp:%{?with_tests:BuildRequires: mibs-net-snmp}}
-%{?with_snmp:BuildRequires: net-snmp-devel >= 5.0.7}
%{?with_oci:%{?with_instantclient:BuildRequires: oracle-instantclient-devel}}
BuildRequires: pam-devel
%{?with_pcre:BuildRequires: pcre-devel >= 8.10}
BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpm-build >= 4.4.0
BuildRequires: rpmbuild(macros) >= 1.566
-%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
-BuildRequires: tar >= 1:1.22
-BuildRequires: xz
+BuildRequires: sed >= 4.0
%if %{with sqlite3} || %{with pdo_sqlite}
BuildRequires: sqlite3-devel >= 3.3.9
%endif
+%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
+BuildRequires: tar >= 1:1.22
%{?with_tidy:BuildRequires: tidy-devel}
+BuildRequires: tokyocabinet-devel
%{?with_odbc:BuildRequires: unixODBC-devel}
%{?with_xmlrpc:BuildRequires: xmlrpc-epi-devel >= 0.54.1}
-BuildRequires: zlib-devel >= 1.0.9
+BuildRequires: xz
+BuildRequires: zlib-devel >= 1.2.0.4
%if %{with apache2}
BuildRequires: apache-devel >= 2.0.52-2
BuildRequires: apr-devel >= 1:1.0.0
%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 20151012
-%define zend_module_api 20151012
-%define zend_extension_api 320151012
-%define php_pdo_api_version 20150127
+%define php_api_version 20170718
+%define zend_module_api 20170718
+%define zend_extension_api 320170718
+%define php_pdo_api_version 20170320
# Extension versions
%define bz2ver 1.0
-%define enchantver 1.1.0
+%define enchantver %{version}
%define fileinfover 1.0.5
%define hashver 1.0
%define intlver 1.1.0
-%define jsonver 1.4.0
+%define jsonver 1.6.0
%define pharver 2.0.2
-%define sqlite3ver 0.7-dev
-%define zipver 1.13.4
+%define sqlite3ver %{version}
+%define zipver 1.15.1
%define phpdbgver 0.5.0
+%define sodiumver %{version}
%define _zend_zts %{!?with_zts:0}%{?with_zts:1}
%define php_debug %{!?debug:0}%{?debug:1}
використання PHP - заміна для CGI скриптів.
%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: %{name}-common = %{epoch}:%{version}-%{release}
-Requires: apache(modules-api) = %{apache_modules_api}
-Requires: apache-mod_mime
+Requires: apache-mod_%{name}-core = %{epoch}:%{version}-%{release}
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)
%package phpdbg
Summary: The debugging platform for PHP 5.4+
+Summary(pl.UTF-8): Platforma diagnostyczna dla PHP 5.4+
Group: Development/Languages/PHP
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Provides: php(phpdbg) = %{phpdbgver}
phpdbg aims to be a lightweight, powerful, easy to use debugging
platform for PHP 5.4+
+%description phpdbg -l pl.UTF-8
+phpdbg - interaktywny debugger dla PHP.
+
+Jest zaimplementowany jako moduł SAPI, potrafi przejąć pełną kontrolę
+nad środowiskiem bez wpływu na zachowanie lub wydajność kodu.
+
+Narzędzie powstało jako lekka, mająca duże możliwości, łatwa w użyciu
+platforma diagnostyczna dla PHP 5.4+.
+
%package common
Summary: Common files needed by both Apache modules and CGI/CLI SAPIs
Summary(pl.UTF-8): Wspólne pliki dla modułu Apache'a i programu CGI
Requires: php-dirs >= 1.4
Requires: rpm-whiteout >= 1.28
Requires: tzdata
+Requires: zlib >= 1.2.0.4
Provides: %{name}(debug) = %{php_debug}
Provides: %{name}(modules_api) = %{php_api_version}
Provides: %{name}(thread-safety) = %{_zend_zts}
Obsoletes: php54-devel
Obsoletes: php55-devel
Obsoletes: php56-devel
+Obsoletes: php70-devel
+Obsoletes: php71-devel
%description devel
The php-devel package lets you compile dynamic extensions to PHP.
%description mbstring -l pl.UTF-8
Moduł PHP dodający obsługę ciągów znaków wielobajtowych.
-%package mcrypt
-Summary: mcrypt extension module for PHP
-Summary(pl.UTF-8): Moduł mcrypt dla PHP
-Group: Libraries
-URL: http://php.net/manual/en/book.mcrypt.php
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Requires: libmcrypt >= 2.5.6
-Provides: php(mcrypt)
-Obsoletes: php-mcrypt < 4:5.3.28-7
-
-%description mcrypt
-This is a dynamic shared object (DSO) for PHP that will add mcrypt
-support.
-
-%description mcrypt -l pl.UTF-8
-Moduł PHP dodający możliwość szyfrowania poprzez bibliotekę mcrypt.
-
%package mysqli
Summary: MySQLi module for PHP
Summary(pl.UTF-8): Moduł MySQLi dla PHP
Requires: %{name}-common = %{epoch}:%{version}-%{release}
%{?with_mysqlnd:Requires: %{name}-mysqlnd = %{epoch}:%{version}-%{release}}
Requires: %{name}-spl = %{epoch}:%{version}-%{release}
+Requires: mysql-libs >= 4.1.13
Provides: php(mysqli)
Obsoletes: php-mysqli < 4:5.3.28-7
URL: http://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_php_extension}
%{?requires_php_pdo_module}
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
+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
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-hash = %{epoch}:%{version}-%{release}
Requires: %{name}-spl = %{epoch}:%{version}-%{release}
-Requires: alternatives
+%{?with_alternatives:Requires: alternatives}
Suggests: %{name}-cli
# zlib is required by phar program, but as phar cli is optional should the dep be too
Suggests: %{name}-zlib
%description sockets -l pl.UTF-8
Moduł PHP dodający obsługę gniazdek.
+%package sodium
+Summary: Wrapper for the Sodium cryptographic library
+Group: Libraries
+URL: https://paragonie.com/book/pecl-libsodium
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Provides: php(sodium) = %{sodiumver}
+
+%description sodium
+A simple, low-level PHP extension for libsodium.
+
%package spl
Summary: Standard PHP Library module for PHP
Summary(pl.UTF-8): Moduł biblioteki standardowej (Standard PHP Library) dla PHP
Group: Libraries
URL: http://qa.php.net/
Requires: %{name}-cli
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
%description tests
This package contains unit tests for PHP and its extensions.
URL: http://php.net/manual/en/book.xsl.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-dom = %{epoch}:%{version}-%{release}
-Requires: libxslt >= 1.0.18
+Requires: libxslt >= 1.1.0
Provides: php(xsl)
Obsoletes: php-xsl < 4:5.3.28-7
# actually not true, functionality is similar, but API differs
Group: Libraries
URL: http://php.net/manual/en/book.zip.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-%{?with_system_libzip:Requires: libzip >= 0.10.1-2}
+%{?with_system_libzip:Requires: libzip >= 1.2.0}
Provides: php(zip) = %{zipver}
Obsoletes: php-pecl-zip < %{zipver}
Obsoletes: php-zip < 4:5.3.28-7
Moduł PHP umożliwiający używanie kompresji zlib.
%prep
-%setup -q -n %{orgname}-%{version}
+%setup -q -n %{orgname}-%{version}%{?subver}
cp -p php.ini-production php.ini
%patch0 -p1
%patch1 -p1
%if "%{pld_release}" != "ac"
%patch34 -p1
%endif
-#%patch36 -p1
-#%patch37 -p1
-#%patch38 -p1
%patch39 -p1
-%if %{with fpm}
-%if 0
-# create split php-fpm.conf patch. review (restore other diffs) and commit
-cp sapi/fpm/php-fpm.conf.in{,.orig}
-%{__sed} -n -e '/; Start a new pool named/,$p' sapi/fpm/php-fpm.conf.in > sapi/fpm/php-fpm.conf-d.in
-%{__sed} -i -e '/; Include one or more files/,/include=etc\/fpm\.d/d' sapi/fpm/php-fpm.conf.in
-%{__sed} -i -e '/; Start a new pool named/,$d' sapi/fpm/php-fpm.conf.in
-set +e
-cd ..
-diff -u %{orgname}-%{version}/sapi/fpm/php-fpm.conf.in{.orig,} > %{PATCH69}
-diff -u /dev/null %{orgname}-%{version}/sapi/fpm/php-fpm.conf-d.in >> %{PATCH69}
-exit 1
-%else
-#%patch69 -p1
-%endif
%patch41 -p1
%patch42 -p1
-%endif
%patch43 -p1
%patch44 -p1
#%patch45 -p1 # imap annotations. fixme
#%patch46 -p1 # imap myrights. fixme
-%if %{with suhosin}
-%patch47 -p1
-%endif
%patch50 -p1
-%patch51 -p1
-%patch52 -p1
+%patch51 -p1 -b .spl-shared
+%patch52 -p1 -b .pcre-shared
%patch53 -p1
%undos ext/spl/tests/SplFileInfo_getInode_basic.phpt
%patch55 -p1
-%patch59 -p1
-%patch60 -p1
-%patch62 -p1
-%{?with_system_libzip:%patch65 -p1}
+%patch59 -p1 -b .systzdata
+%if %{with instantclient}
+%patch60 -p1 -b .instantclient
+%endif
%patch66 -p1
%patch67 -p1
#%patch68 -p1 DROP or update to 7.0 APIs
%patch70 -p1
%patch71 -p1
-%patch72 -p1
+%patch72 -p1 -b .phar-shared
%{__sed} -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4
# disable broken tests
# says just "Terminated" twice and fails
-mv sapi/cli/tests/022.phpt{,.broken}
+%{__mv} sapi/cli/tests/022.phpt{,.broken}
# really dumb test, executable binary name is .libs/ something when building
# https://bugs.php.net/bug.php?id=54514
-mv tests/basic/bug54514.phpt{,.disable}
+%{__mv} tests/basic/bug54514.phpt{,.disable}
# breaks whole testsuite unexpectedly:
# Fatal error: Call to undefined function gzencode() in run-tests.php on line 1714
# probably broken as zlib is built as shared
-mv ext/soap/tests/server019.phpt{,disable}
+%{__mv} ext/soap/tests/server019.phpt{,disable}
# Fatal error: Call to undefined function gzcompress() in run-tests.php on line 1728
-mv ext/soap/tests/server020.phpt{,disable}
+%{__mv} ext/soap/tests/server020.phpt{,disable}
# runs out of memory and kills carme vserver
# PASS Bug #39438 (Fatal error: Out of memory) [Zend/tests/bug39438.phpt]
-mv Zend/tests/bug39438.phpt{,.disable}
+%{__mv} Zend/tests/bug39438.phpt{,.disable}
# php-5.3.3/ext/standard/tests/file/statpage.phpt
%{__rm} ext/standard/tests/file/statpage.phpt
: Update the pharver macro and rebuild.
exit 1
fi
-ver=$(sed -n '/#define PHP_SQLITE3_VERSION/{s/.* "//;s/".*$//;p}' ext/sqlite3/php_sqlite3.h)
-if test "$ver" != "%{sqlite3ver}"; then
+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)
+if test "$ver" != "PHP_VERSION"; then
+ exit 1
+fi
ver=$(sed -n '/#define PHP_ZIP_VERSION /{s/.* "//;s/".*$//;p}' ext/zip/php_zip.h)
if test "$ver" != "%{zipver}"; then
: Error: Upstream ZIP version is now ${ver}, expecting %{zipver}.
: Update the bz2ver macro and rebuild.
exit 1
fi
-ver=$(sed -n '/#define PHP_ENCHANT_VERSION /{s/.* "//;s/".*$//;p}' ext/enchant/php_enchant.h)
-if test "$ver" != "%{enchantver}"; then
- : Error: Upstream Enchant version is now ${ver}, expecting %{enchantver}.
- : Update the enchantver macro and rebuild.
+ver=$(awk '/#define PHP_ENCHANT_VERSION/ {print $3}' ext/enchant/php_enchant.h | xargs)
+if test "$ver" != "PHP_VERSION"; then
exit 1
fi
ver=$(awk '/#define PHP_HASH_VERSION/ {print $3}' ext/hash/php_hash.h | xargs)
export PROG_SENDMAIL="/usr/lib/sendmail"
export CPPFLAGS="-DDEBUG_FASTCGI -DHAVE_STRNDUP %{rpmcppflags} \
-I%{_includedir}/xmlrpc-epi"
+%if %{with intl}
+# icu 59+ C++ API requires C++ >= 11
+CXXFLAGS="%{rpmcxxflags} -std=c++11"
+%endif
sapis="
cli
sapi_args=''
case $sapi in
cgi-fcgi)
- sapi_args='--disable-cli'
+ sapi_args='--enable-cgi'
;;
cli)
- sapi_args='--disable-cgi %{?with_gcov:--enable-gcov}'
+ sapi_args='--enable-cli %{?with_gcov:--enable-gcov}'
;;
fpm)
- sapi_args='--disable-cli --disable-cgi --enable-fpm'
+ sapi_args='--enable-fpm'
;;
embed)
- sapi_args='--disable-cli --disable-cgi --enable-embed'
+ sapi_args='--enable-embed'
;;
apxs2)
ver=$(rpm -q --qf '%{V}' apache-devel)
- sapi_args="--disable-cli --disable-cgi --with-apxs2=%{apxs2} --with-apache-version=$ver"
+ sapi_args="--with-apxs2=%{apxs2} --with-apache-version=$ver"
;;
litespeed)
- sapi_args='--disable-cli --disable-cgi --with-litespeed'
+ sapi_args='--with-litespeed'
;;
phpdbg)
- sapi_args='--disable-cli --disable-cgi --enable-phpdbg %{?debug:--enable-phpdbg-debug}'
+ sapi_args='--enable-phpdbg %{?debug:--enable-phpdbg-debug}'
;;
milter)
- sapi_args='--disable-cli --disable-cgi --with-milter'
+ sapi_args='--with-milter'
;;
esac
%configure \
EXTRA_LDFLAGS="%{rpmldflags}" \
+ --disable-cgi \
+ --disable-cli \
+ --disable-phpdbg \
$sapi_args \
%if "%{!?configure_cache:0}%{?configure_cache}" == "0"
--cache-file=config.cache \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/conf.d \
--with-system-tzdata \
+ %{?with_argon2:--with-password-argon2} \
--%{!?debug:dis}%{?debug:en}able-debug \
%{?with_zts:--enable-maintainer-zts} \
--enable-inline-optimization \
%{__enable_disable exif exif shared} \
%{__enable_disable fileinfo fileinfo shared} \
%{__enable_disable ftp ftp shared} \
- --enable-gd-native-ttf \
%{?with_intl:--enable-intl=shared} \
--enable-libxml \
%{__enable_disable mbstring mbstring shared,all} \
--enable-sysvshm=shared \
--enable-soap=shared \
--enable-sockets=shared \
+ %{__with_without sodium sodium shared} \
--enable-tokenizer=shared \
%{?with_wddx:--enable-wddx=shared} \
--enable-xml=shared \
%{?with_interbase:--with-interbase=shared%{!?with_interbase_inst:,/usr}} \
--with-jpeg-dir=/usr \
%{?with_ldap:--with-ldap=shared --with-ldap-sasl} \
- %{__with_without mcrypt mcrypt shared} \
%{?with_mm:--with-mm} \
%{?with_mysqlnd:--enable-mysqlnd=shared} \
%{?with_mysqli:--with-mysqli=shared,%{!?with_mysqlnd:/usr/bin/mysql_config}%{?with_mysqlnd:mysqlnd}} \
%{?with_tidy:--with-tidy=shared} \
%{?with_odbc:--with-unixODBC=shared,/usr} \
%{__with_without xmlrpc xmlrpc shared,/usr} \
- --with-xsl=shared \
+ %{?with_xsl:--with-xsl=shared} \
--with-zlib=shared \
--with-zlib-dir=shared,/usr \
%{?with_system_libzip:--with-libzip} \
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%{_mandir}/man1/phar{,%{ver_suffix}}.1
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/phar{,%{php_suffix}}.phar
+%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/phar{,%{php_suffix}}.1
+%endif
+%if %{with alternatives}
# touch for ghost
%{__rm} $RPM_BUILD_ROOT%{_bindir}/phar
touch $RPM_BUILD_ROOT%{_bindir}/phar
touch $RPM_BUILD_ROOT%{_mandir}/man1/phar.1
+%endif
# version suffix
v=$(echo %{version} | cut -d. -f1-2)
# install Apache2 DSO module
%if %{with apache2}
libtool --mode=install install -p sapi/apache2handler/libphp7.la $RPM_BUILD_ROOT%{_libdir}/apache
-mv $RPM_BUILD_ROOT%{_libdir}/apache/libphp7{,-$v}.so
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/apache/libphp7{,-$v}.so
ln -s libphp7-$v.so $RPM_BUILD_ROOT%{_libdir}/apache/mod_php.so
%endif
INSTALL="libtool --mode=install install -p" \
INSTALL_ROOT=$RPM_BUILD_ROOT
+%if %{without default_php}
# version the phpdbg files
-mv $RPM_BUILD_ROOT%{_bindir}/phpdbg{,%{ver_suffix}}
-mv $RPM_BUILD_ROOT%{_mandir}/man1/phpdbg{,%{ver_suffix}}.1
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/phpdbg{,%{ver_suffix}}
+%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/phpdbg{,%{ver_suffix}}.1
+%endif
%endif
%if %{with milter}
%{__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)
%extension_scripts json
%extension_scripts ldap
%extension_scripts mbstring
-%extension_scripts mcrypt
%extension_scripts mysqli
%extension_scripts mysqlnd
%extension_scripts oci8
%extension_scripts snmp
%extension_scripts soap
%extension_scripts sockets
+%extension_scripts sodium
%extension_scripts spl
%extension_scripts sqlite3
%extension_scripts sysvmsg
%post phar
%ext_post
+%if %{with alternatives}
update-alternatives \
--install %{_bindir}/phar phar %{_bindir}/phar%{ver_suffix}.phar %{ver_suffix} \
--slave %{_mandir}/man1/phar.1 phar.1 %{_mandir}/man1/phar%{ver_suffix}.1* || :
+%endif
%postun phar
%ext_postun
+%if %{with alternatives}
if [ $1 -eq 0 ]; then
update-alternatives --remove phar %{_bindir}/phar || :
fi
+%endif
%if %{with apache2}
%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/libphp7-*.*.so
%endif
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-fpm.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php-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
%if %{with phpdbg}
%files phpdbg
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/phpdbg%{ver_suffix}
-%{_mandir}/man1/phpdbg%{ver_suffix}.1*
+%attr(755,root,root) %{_bindir}/phpdbg%{php_suffix}
+%{_mandir}/man1/phpdbg%{php_suffix}.1*
%endif
%if %{with milter}
%files common
%defattr(644,root,root,755)
-%doc CREDITS EXTENSIONS LICENSE NEWS README.namespaces UPGRADING* Zend/{LICENSE.Zend,ZEND_CHANGES} php.ini-*
+%doc CREDITS EXTENSIONS LICENSE NEWS UPGRADING* Zend/{LICENSE.Zend,README*} php.ini-*
%dir %{_sysconfdir}
%dir %{_sysconfdir}/conf.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php.ini
%attr(755,root,root) %{php_extensiondir}/mbstring.so
%endif
-%if %{with mcrypt}
-%files mcrypt
-%defattr(644,root,root,755)
-%doc ext/mcrypt/{CREDITS,TODO}
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/mcrypt.ini
-%attr(755,root,root) %{php_extensiondir}/mcrypt.so
-%endif
-
%if %{with mysqli}
%files mysqli
%defattr(644,root,root,755)
%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
-%{_mandir}/man1/phar.phar.1
-%{_mandir}/man1/phar%{ver_suffix}.1*
+%attr(755,root,root) %{_bindir}/phar%{php_suffix}.phar
+%{_mandir}/man1/phar%{php_suffix}.1*
+%{_mandir}/man1/phar.phar.1*
+%if %{with alternatives}
%ghost %{_bindir}/phar
%ghost %{_mandir}/man1/phar.1
+%else
+%attr(755,root,root) %{_bindir}/phar
+%endif
%endif
%if %{with posix}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sockets.ini
%attr(755,root,root) %{php_extensiondir}/sockets.so
+%if %{with sodium}
+%files sodium
+%defattr(644,root,root,755)
+%doc ext/sodium/{README.md,CREDITS}
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sodium.ini
+%attr(755,root,root) %{php_extensiondir}/sodium.so
+%endif
+
%files spl
%defattr(644,root,root,755)
%doc ext/spl/{CREDITS,README,TODO}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xmlwriter.ini
%attr(755,root,root) %{php_extensiondir}/xmlwriter.so
+%if %{with xsl}
%files xsl
%defattr(644,root,root,755)
%doc ext/xsl/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/xsl.ini
%attr(755,root,root) %{php_extensiondir}/xsl.so
+%endif
%files zip
%defattr(644,root,root,755)