%bcond_without phpdbg # disable phpdbg SAPI
# - Extensions
%bcond_without bcmath # without bcmath extension module
-%bcond_without bz2 # without bz2 extension module
+%bcond_without bzip2 # 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 pdo_dblib # without PDO dblib extension module
%bcond_without pdo_firebird # without PDO Firebird extension module
%bcond_without pdo_mysql # without PDO MySQL extension module
-%bcond_without pdo_oci # without PDO oci extension module
+%bcond_without pdo_oci # without PDO oci extension module
%bcond_without pdo_odbc # without PDO ODBC extension module
%bcond_without pdo_pgsql # without PDO pgsql extension module
%bcond_without pdo_sqlite # without PDO SQLite extension module
%bcond_without sqlite3 # without SQLite3 extension module
%bcond_without tidy # without Tidy extension module
%bcond_without xmlrpc # without XML-RPC extension module
-%bcond_without xsl # without xsl extension module
-%bcond_without zip # without zip 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
Summary(ru.UTF-8): PHP Версии 7 - язык препроцессирования HTML-файлов, выполняемый на сервере
Summary(uk.UTF-8): PHP Версії 7 - мова препроцесування HTML-файлів, виконувана на сервері
Name: %{orgname}%{php_suffix}
-Version: 7.4.4
-Release: 1
+Version: 7.4.30
+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: a5632697e223b8386025520662dcb78f
+Source0: https://php.net/distributions/%{orgname}-%{version}.tar.xz
+# Source0-md5: c373c0ea292e8a1d3e87a1153ee64199
Source1: opcache.ini
Source2: %{orgname}-mod_php.conf
Source3: %{orgname}-cgi-fcgi.ini
Patch25: %{orgname}-stupidapache_version.patch
Patch27: %{orgname}-config-dir.patch
Patch29: %{orgname}-fcgi-graceful.patch
-Patch31: %{orgname}-fcgi-error_log-no-newlines.patch
-Patch37: %{orgname}-mysqli-charsetphpini.patch
-Patch38: %{orgname}-pdo_mysql-charsetphpini.patch
Patch39: %{orgname}-use-prog_sendmail.patch
Patch41: %{orgname}-fpm-config.patch
Patch43: %{orgname}-silent-session-cleanup.patch
Patch44: %{orgname}-include_path.patch
Patch50: extension-shared-optional-dep.patch
Patch53: fix-test-run.patch
-Patch55: bug-52078-fileinode.patch
Patch59: %{orgname}-systzdata.patch
+Patch60: %{orgname}-oracle-instantclient.patch
Patch66: php-db.patch
Patch67: mysql-lib-ver-mismatch.patch
-Patch69: fpm-conf-split.patch
+# https://bugs.php.net/bug.php?id=68344
+Patch68: php-mysql-ssl-context.patch
Patch71: libdb-info.patch
+Patch72: openssl.patch
URL: http://php.net/
-%{?with_firebird:%{!?with_interbase_inst:BuildRequires: Firebird-devel >= 1.0.2.908-2}}
+%{?with_pdo_firebird:%{!?with_interbase_inst:BuildRequires: Firebird-devel >= 1.0.2.908-2}}
%{?with_pspell:BuildRequires: aspell-devel >= 2:0.50.0}
BuildRequires: autoconf >= 2.59
BuildRequires: automake >= 1.4d
BuildRequires: db-devel >= 4.0
BuildRequires: elfutils-devel
%{?with_enchant:BuildRequires: enchant-devel >= 1.1.3}
-%{?with_kerberos5:BuildRequires: heimdal-devel}
-%{?with_argon2:BuildRequires: libargon2-devel >= 20161029}
-%{?with_ffi:BuildRequires: libffi-devel}
-%{?with_sodium:BuildRequires: libsodium-devel >= 1.0.8}
%if %{with pdo_dblib}
BuildRequires: freetds-devel >= 0.82
%endif
%endif
BuildRequires: gdbm-devel
BuildRequires: gmp-devel >= 4.2
+%{?with_kerberos5:BuildRequires: heimdal-devel}
%{?with_imap:BuildRequires: imap-devel >= 1:2007e-2}
%{?with_gcov:BuildRequires: lcov}
%{?with_fpm:BuildRequires: libapparmor-devel}
+%{?with_argon2:BuildRequires: libargon2-devel >= 20161029}
+%{?with_ffi:BuildRequires: libffi-devel}
%{?with_intl:BuildRequires: libicu-devel >= 50.1}
BuildRequires: libjpeg-devel
BuildRequires: libltdl-devel >= 1.4
BuildRequires: libpng-devel >= 1.0.8
+%{?with_sodium:BuildRequires: libsodium-devel >= 1.0.8}
%{?with_intl:BuildRequires: libstdc++-devel}
BuildRequires: libtool >= 2:2.4.6
%{?with_webp:BuildRequires: libwebp-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
+BuildRequires: oniguruma-devel
%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0}
%if %{with openssl} || %{with ldap}
BuildRequires: openssl-devel >= 1.0.1
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define php_sysconfdir /etc/%{name}
-%define php_extensiondir %{_libdir}/%{name}
-%define php_datadir /usr/share/php/%{name}
+%define php_extensiondir %{_libdir}/php/%{name}
+%define php_data_dir /usr/share/php/%{name}
%define _sysconfdir %{php_sysconfdir}
# must be in sync with source. extra check ensuring that it is so is done in %%build
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
Moduł PHP dodający obsługę znaczników EXIF w plikach obrazków.
%package ffi
-Summary: %{modname} - Foreign Function Interface
+Summary: Foreign Function Interface module for PHP
+Summary(pl.UTF-8): Moduł Foreign Function Interface (interfejsu do obcych języków) dla PHP
Group: Libraries
URL: https://www.php.net/manual/en/book.ffi.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
FFI is a multi-platform extension for PHP that allows you to bind to
functions from arbitrary shared libraries and call them.
+%description ffi -l pl.UTF-8
+FFI to wieloplatformowe rozszerzenie dla PHP pozwalające dowiązywać
+funkcje z dowolnych bibliotek współdzielonych i wywoływać je.
+
%package fileinfo
Summary: libmagic bindings
Summary(pl.UTF-8): Wiązania do libmagic
%package sodium
Summary: Wrapper for the Sodium cryptographic library
+Summary(pl.UTF-8): Interfejs do biblioteki kryptograficznej Sodium
Group: Libraries
URL: https://paragonie.com/book/pecl-libsodium
Requires: %{name}-common = %{epoch}:%{version}-%{release}
%description sodium
A simple, low-level PHP extension for libsodium.
+%description sodium -l pl.UTF-8
+Proste, niskopoziomowe rozszerzenie PHP wykorzystując libsodium.
+
%package sqlite3
Summary: SQLite3 extension module for PHP
Summary(pl.UTF-8): Moduł SQLite3 dla PHP
%patch0 -p1
%patch1 -p1
%patch3 -p1
+%patch4 -p1
+
%patch7 -p1
%patch9 -p1
%patch10 -p1
%patch25 -p1
%patch27 -p1
%patch29 -p1
-%patch31 -p1
-%patch37 -p1
-%patch38 -p1
%patch39 -p1
-%if %{with fpm}
%patch41 -p1
-%endif
%patch43 -p1
%patch44 -p1
%patch50 -p1
+
%patch53 -p1
-%undos ext/spl/tests/SplFileInfo_getInode_basic.phpt
-%patch55 -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
%patch71 -p1
+%patch72 -p1
+
+sed -E -i -e '1s,#!\s*/usr/bin/env\s+(.*),#!%{__bindir}\1,' \
+ ext/ext_skel.php \
+ run-tests.php
%{__sed} -i -e '/PHP_ADD_LIBRARY_WITH_PATH/s#xmlrpc,#xmlrpc-epi,#' ext/xmlrpc/config.m4
%{__rm} -r ext/com_dotnet
# remove all bundled libraries not to link with them accidentally
+#%{__rm} -r ext/bcmath/libbcmath
+#%{__rm} -r ext/date/lib
+#%{__rm} -r ext/fileinfo/libmagic
+#%{__rm} -r ext/dba/libcdb
+#%{__rm} -r ext/dba/libflatfile
+#%{__rm} -r ext/dba/libinifile
+#%{__rm} -r ext/gd/libgd
+#%{__rm} -r ext/mbstring/libmbfl
+#%{__rm} -r ext/pcre/pcre2lib
+#%{__rm} -r ext/soap/interop
%{__rm} -r ext/xmlrpc/libxmlrpc
+#%{__rm} -r ext/zip/lib
%{__rm} ext/date/lib/timezonedb.h
cp -pf Zend/LICENSE{,.Zend}
sh -xe %{_sourcedir}/skip-tests.sh
%build
+get_version() {
+ local define="$1" filename="$2"
+ awk -vdefine="$define" '/#define/ && $2 == define {print $3}' "$filename" | xargs
+}
+
API=$(awk '/#define PHP_API_VERSION/{print $3}' main/php.h)
if [ $API != %{php_api_version} ]; then
echo "Set %%define php_api_version to $API and re-run."
: Update the fileinfover macro and rebuild.
exit 1
fi
-ver=$(awk '/#define PHP_PHAR_VERSION/ {print $3}' ext/phar/php_phar.h | xargs)
+ver=$(get_version PHP_PHAR_VERSION ext/phar/php_phar.h)
if test "$ver" != "PHP_VERSION"; then
: Error: Upstream PHAR version is now ${ver}, expecting %{pharver}.
: Update the pharver macro and rebuild.
: Update the zipver macro and rebuild.
exit 1
fi
-ver=$(awk '/#define PHP_JSON_VERSION/ {print $3}' ext/json/php_json.h | xargs)
+ver=$(get_version PHP_JSON_VERSION ext/json/php_json.h)
if test "$ver" != "PHP_VERSION"; then
: Error: Upstream JSON version is now ${ver}, expecting %{jsonver}.
: Update the jsonver macro and rebuild.
exit 1
fi
-ver=$(awk '/#define PHPDBG_VERSION/ {print $3}' sapi/phpdbg/phpdbg.h | xargs)
+ver=$(get_version PHPDBG_VERSION sapi/phpdbg/phpdbg.h)
if test "$ver" != "PHP_VERSION"; then
: Error: Upstream phpdbg version is now ${ver}, expecting %{phpdbgver}.
: Update the phpdbgver macro and rebuild.
exit 1
fi
-ver=$(awk '/#define PHP_BZ2_VERSION/ {print $3}' ext/bz2/php_bz2.h | xargs)
+ver=$(get_version PHP_BZ2_VERSION ext/bz2/php_bz2.h)
if test "$ver" != "PHP_VERSION"; then
: Error: Upstream BZIP2 version is now ${ver}, expecting %{bz2ver}.
: Update the bz2ver macro and rebuild.
if test "$ver" != "PHP_VERSION"; then
exit 1
fi
-ver=$(awk '/#define PHP_HASH_VERSION/ {print $3}' ext/hash/php_hash.h | xargs)
+ver=$(get_version PHP_HASH_VERSION ext/hash/php_hash.h)
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=$(awk '/#define PHP_INTL_VERSION/ {print $3}' ext/intl/php_intl.h | xargs)
+ver=$(get_version PHP_INTL_VERSION ext/intl/php_intl.h)
if test "$ver" != "PHP_VERSION"; then
: Error: Upstream Intl version is now ${ver}, expecting %{intlver}.
: Update the intlver macro and rebuild.
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 --enable-litespeed'
+ sapi_args='--enable-litespeed'
;;
phpdbg)
- sapi_args='--disable-cli --disable-cgi --enable-phpdbg %{?debug:--enable-phpdbg-debug}'
+ sapi_args='--enable-phpdbg %{?debug:--enable-phpdbg-debug}'
;;
esac
%configure \
EXTRA_LDFLAGS="%{rpmldflags}" \
--program-suffix=%{php_suffix} \
+ --disable-cgi \
+ --disable-cli \
+ --disable-phpdbg \
$sapi_args \
%if "%{!?configure_cache:0}%{?configure_cache}" == "0"
--cache-file=config.cache \
%endif
- --datadir=%{php_datadir} \
+ --datadir=%{php_data_dir} \
--with-libdir=%{_lib} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/conf.d \
--%{!?with_debug:dis}%{?with_debug:en}able-debug \
%{?with_zts:--enable-maintainer-zts} \
--enable-inline-optimization \
+ --enable-option-checking=fatal \
%{__enable_disable bcmath bcmath shared} \
%{__enable_disable calendar calendar shared} \
%{__enable_disable ctype ctype shared} \
--enable-tokenizer=shared \
--enable-xml=shared \
--enable-xmlreader=shared \
- %{__with_without bz2 bz2 shared} \
+ %{__with_without bzip2 bz2 shared} \
%{__with_without curl curl shared} \
--with-db4 \
%{__with_without iconv iconv shared} \
cp -pf php_config.h.cli main/php_config.h
cp -pf Makefile.cli Makefile
%{__make} install \
- phpbuilddir=%{_libdir}/%{name}/build \
+ phpbuilddir=%{_libdir}/php/php%{php_suffix}/build \
INSTALL_ROOT=$RPM_BUILD_ROOT
-# version the .phar files
-%{__mv} $RPM_BUILD_ROOT%{_bindir}/phar{,%{php_suffix}}.phar
-%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/phar{,%{php_suffix}}.1
# touch for ghost
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/phar
touch $RPM_BUILD_ROOT%{_bindir}/phar
touch $RPM_BUILD_ROOT%{_mandir}/man1/phar.1
cp -p ext/mbstring/libmbfl/mbfl/*.h $RPM_BUILD_ROOT%{_includedir}/php/php%{php_suffix}/ext/mbstring
# tests
-install -d $RPM_BUILD_ROOT%{php_datadir}/tests/php
-install -p run-tests.php $RPM_BUILD_ROOT%{php_datadir}/tests/php/run-tests.php
-cp -a tests/* $RPM_BUILD_ROOT%{php_datadir}/tests/php
+install -d $RPM_BUILD_ROOT%{php_data_dir}/tests/php
+install -p run-tests.php $RPM_BUILD_ROOT%{php_data_dir}/tests/php/run-tests.php
+cp -a tests/* $RPM_BUILD_ROOT%{php_data_dir}/tests/php
# fix install paths, avoid evil rpaths
sed -i -e "s|^libdir=.*|libdir='%{_libdir}'|" $RPM_BUILD_ROOT%{_libdir}/libphp_common%{php_suffix}.la
# restart webserver at the end of transaction
[ ! -f /etc/httpd/conf.d/??_mod_php.conf ] || %service -q httpd restart
-%triggerpostun common -- php-common < 4:5.3.28-7
+%triggerpostun common -- %{name}-common < 4:5.6.4-2, php-common < 4:5.6.4-2
+# switch to browscap package if the ini file has original value
+%{__sed} -i -e 's#%{_sysconfdir}/browscap.ini#/usr/share/browscap/php_browscap.ini#' %{_sysconfdir}/php.ini
+# disable browscap, if optional package not present
+if [ ! -e /usr/share/browscap/php_browscap.ini ]; then
+ %{__sed} -i -e 's#^browscap = /usr/share/browscap/php_browscap.ini#;&#' %{_sysconfdir}/php.ini
+fi
+
# migrate configs /etc/php/conf.d -> /etc/phpXY/conf.d/
# do config migration in php-common trigger, as the trigger is ran after all packages are upgraded
# this way we can stick to one trigger, instead of attaching one for each (sub)package!
' $nf
done
-%triggerpostun common -- %{name}-common < 4:5.6.4-2, php-common < 4:5.6.4-2
-# switch to browscap package if the ini file has original value
-%{__sed} -i -e 's#%{_sysconfdir}/browscap.ini#/usr/share/browscap/php_browscap.ini#' %{_sysconfdir}/php.ini
-# disable browscap, if optional package not present
-if [ ! -e /usr/share/browscap/php_browscap.ini ]; then
- %{__sed} -i -e 's#^browscap = /usr/share/browscap/php_browscap.ini#;&#' %{_sysconfdir}/php.ini
-fi
-
%triggerpostun -n apache-mod_%{name} -- apache-mod_%{name} < 4:7.0.0-2.RC4
sed -i -e 's#modules/libphp[57].so#modules/mod_php.so#g' /etc/httpd/conf.d/*_mod_php.conf
%dir %{_sysconfdir}/conf.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php.ini
%attr(755,root,root) %{_libdir}/libphp_common%{php_suffix}-*.so
-%dir %{php_datadir}
+%dir %{php_data_dir}
%dir %{php_extensiondir}
%doc ext/session/mod_files.sh
%attr(755,root,root) %{_libdir}/libphp_common%{php_suffix}.so
%{_libdir}/libphp_common%{php_suffix}.la
%{_includedir}/php/php%{php_suffix}
-%{_libdir}/%{name}/build
+%{_libdir}/php/php%{php_suffix}/build
%{_mandir}/man1/php-config%{php_suffix}.1*
%ghost %{_mandir}/man1/php-config.1*
%{_mandir}/man1/phpize%{php_suffix}.1*
%attr(755,root,root) %{php_extensiondir}/bcmath.so
%endif
-%if %{with bz2}
+%if %{with bzip2}
%files bz2
%defattr(644,root,root,755)
%doc ext/bz2/CREDITS
%attr(755,root,root) %{php_extensiondir}/mysqlnd.so
%endif
-%if %{with oci}
+%if %{with pdo_oci}
%files oci8
%defattr(644,root,root,755)
%doc ext/oci8/{CREDITS,README}
%attr(755,root,root) %{php_extensiondir}/pdo_mysql.so
%endif
-%if %{with pdo_oci}
+%if %{with oci}
%files pdo-oci
%defattr(644,root,root,755)
%doc ext/pdo_oci/CREDITS
%attr(755,root,root) %{php_extensiondir}/phar.so
%attr(755,root,root) %{_bindir}/phar%{php_suffix}.phar
%{_mandir}/man1/phar%{php_suffix}.1*
-%{_mandir}/man1/phar.phar.1*
%ghost %{_bindir}/phar
%ghost %{_mandir}/man1/phar.1*
%endif
%if %{with pspell}
%files pspell
%defattr(644,root,root,755)
-%doc ext/pspell/CREDITS
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/??_pspell.ini
%attr(755,root,root) %{php_extensiondir}/pspell.so
%endif
%files tests
%defattr(644,root,root,755)
-%dir %{php_datadir}/tests
-%dir %{php_datadir}/tests/php
-%{php_datadir}/tests/php/basic
-%{php_datadir}/tests/php/classes
-%{php_datadir}/tests/php/func
-%{php_datadir}/tests/php/lang
-%{php_datadir}/tests/php/output
-%{php_datadir}/tests/php/run-test
-%{php_datadir}/tests/php/security
-%{php_datadir}/tests/php/strings
-%{php_datadir}/tests/php/quicktester.inc
-%attr(755,root,root) %{php_datadir}/tests/php/run-tests.php
+%dir %{php_data_dir}/tests
+%dir %{php_data_dir}/tests/php
+%{php_data_dir}/tests/php/basic
+%{php_data_dir}/tests/php/classes
+%{php_data_dir}/tests/php/func
+%{php_data_dir}/tests/php/lang
+%{php_data_dir}/tests/php/output
+%{php_data_dir}/tests/php/run-test
+%{php_data_dir}/tests/php/security
+%{php_data_dir}/tests/php/strings
+%{php_data_dir}/tests/php/quicktester.inc
+%attr(755,root,root) %{php_data_dir}/tests/php/run-tests.php
%if %{with tidy}
%files tidy
%if %{with zip}
%files zip
%defattr(644,root,root,755)
-%doc ext/zip/{CREDITS,examples}
+%doc ext/zip/CREDITS
+%doc ext/zip/examples
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/??_zip.ini
%attr(755,root,root) %{php_extensiondir}/zip.so
%endif