# remirepo spec file for php82-php # with SCL and backport stuff, adapted from # # Fedora spec file for php # # License: MIT # http://opensource.org/licenses/MIT # # Please preserve changelog entries # %global php_name php83 %global scl_prefix %{php_name}- %global scl %{php_name} %global pkg_name %{name} %global _root_sysconfdir %{_sysconfdir} %global _root_bindir %{_bindir} %global _root_sbindir %{_sbindir} %global _root_includedir %{_includedir} %global _root_libdir %{_libdir} %global _root_prefix %{_prefix} %global _root_initddir %{_initrddir} %global _root_datadir %{_datadir} %global _prefix /opt/%{php_name} %global _sysconfdir %{_root_sysconfdir}/opt/%{php_name} %global _localstatedir /var/opt/%{php_name} %global _libdir %{_prefix}/lib %global _bindir %{_prefix}/bin %global _sbindir %{_prefix}/sbin %global _includedir %{_prefix}/include %global _datadir %{_prefix}/share %global _mandir %{_datadir}/man %global _docdir %{_datadir}/doc %global _infodir %{_datadir}/info %global _initrddir %{_root_initddir} %global _mysql_dir /opt/mysql-8 # API/ABI check %global apiver 20230831 %global zendver 20230831 %global pdover 20170320 # Extension version %global oci8ver 3.3.0 %global zipver 1.22.2 # Adds -z now to the linker flags %global _hardened_build 1 # version used for php embedded library soname %global embed_version 8.3 # Ugly hack. Harcoded values to avoid relocation. %global _httpd_mmn %(cat %{_root_includedir}/httpd/.mmn 2>/dev/null || echo 0) %global _httpd_confdir %{_root_sysconfdir}/httpd/conf.d %global _httpd_moddir %{_libdir}/httpd/modules %global _root_httpd_moddir %{_root_libdir}/httpd/modules %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 # httpd 2.4 values %global _httpd_apxs %{_root_bindir}/apxs %global _httpd_modconfdir %{_root_sysconfdir}/httpd/conf.modules.d %global _httpd_contentdir /usr/share/httpd %else # httpd 2.2 values %global _httpd_apxs %{_root_sbindir}/apxs %global _httpd_modconfdir %{_root_sysconfdir}/httpd/conf.d %global _httpd_contentdir /var/www %endif %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_root_sysconfdir}/rpm; echo $d) %global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock) %global oraclever 21.7 %global oraclelib 21.1 # Build for LiteSpeed Web Server (LSAPI), you can disable using --without tests %bcond_without lsws # Regression tests take a long time, you can skip 'em with this %bcond_with tests # Use the arch-specific mysql_config binary to avoid mismatch with the # arch detection heuristic used by bindir/mysql_config. %global mysql_config %{_mysql_dir}/bin/mysql_config # Optional extensions; to enable: pass "--with xxx" etc to rpmbuild/mock. %bcond_with oci8 %bcond_without zip # Optional extensions; to disable: pass "--without xxx" etc to rpmbuild/mock. %bcond_without imap %bcond_without firebird %bcond_without freetds %bcond_without tidy %bcond_without sqlite3 %bcond_without enchant %if 0%{?fedora} >= 27 || 0%{?rhel} != 7 # switch to bundled library using --without libpcre %bcond_without libpcre %else # switch to system library using --with libpcre %bcond_with libpcre %endif # Using qdbm from "remi" for now, see https://bugzilla.redhat.com/2017308 %if 0%{?fedora} >= 33 || 0%{?rhel} >= 8 %bcond_without qdbm %else %bcond_with qdbm %endif %if 0%{?fedora} >= 33 || 0%{?rhel} >= 8 # switch to bundled library using --without libxcrypt %bcond_without libxcrypt %else # switch to system library using --with libxcrypt %bcond_with libxcrypt %endif %bcond_without dtrace # build with system libgd (gd-last in remi repo) %bcond_without libgd # build with system tzdata (2021 required) %if 0%{?fedora} >= 33 || 0%{?rhel} >= 6 %bcond_without tzdata %else %bcond_with tzdata %endif %if 0%{?rhel} == 7 %global dtsname devtoolset-8 %global dtsprefix %{dtsname}- %endif # httpd 2.4.10 with httpd-filesystem and sethandler support %if 0%{?fedora} >= 21 || 0%{?rhel} >= 8 %global with_httpd2410 1 %else %global with_httpd2410 0 %endif %global gh_commit e2e2d2997328951de813fd157b6b4bf8701d8607 %global gh_short %(c=%{gh_commit}; echo ${c:0:7}) #global gh_date 20220530 %global gh_owner php %global gh_project php-src %global upver 8.3.11 #global rcver RC7 Summary: PHP scripting language for creating dynamic web sites Name: %{?scl_prefix}php Version: %{upver}%{?rcver:~%{rcver}}%{?gh_date:.%{gh_date}} Release: 1%{?dist} # All files licensed under PHP version 3.01, except # Zend is licensed under Zend # TSRM is licensed under BSD # main/snprintf.c, main/spprintf.c and main/rfc1867.c are ASL 1.0 # ext/date/lib is MIT # Zend/zend_sort is NCSA # Zend/asm is Boost License: PHP and Zend and BSD and MIT and ASL 1.0 and NCSA and Boost URL: http://www.php.net/ %if 0%{?gh_date} Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{upver}-%{gh_short}.tar.gz %else Source0: http://www.php.net/distributions/php-%{upver}%{?rcver}.tar.xz # See https://secure.php.net/gpg-keys.php Source20: https://www.php.net/distributions/php-keyring.gpg Source21: https://www.php.net/distributions/php-%{upver}%{?rcver}.tar.xz.asc %endif Source1: php.conf Source2: php.ini Source3: macros.php Source4: php-fpm.conf Source5: php-fpm-www.conf Source6: php-fpm.service Source7: php-fpm.logrotate Source8: php-fpm.sysconfig Source9: php.modconf Source10: php.conf2 Source12: php-fpm.wants Source13: php-fpm.init # Configuration files for some extensions Source50: 10-opcache.ini Source51: opcache-default.blacklist Source52: 20-oci8.ini Source53: 20-ffi.ini # Build fixes Patch1: php-7.4.0-httpd.patch Patch5: php-7.2.0-includedir.patch Patch6: php-8.0.0-embed.patch Patch8: php-8.1.0-libdb.patch # RHEL backports Patch10: php-8.2.0-curl.patch # Functional changes # Use system nikic/php-parser Patch41: php-8.3.0-parser.patch # use system tzdata Patch42: php-8.2.23-systzdata-v24.patch # See http://bugs.php.net/53436 Patch44: php-7.4.0-phpize.patch # Use -lldap_r for OpenLDAP Patch45: php-7.4.0-ldap_r.patch # Ignore unsupported "threads" option on password_hash Patch46: php-8.0.7-argon2.patch # drop "Configure command" from phpinfo output # and only use gcc (instead of full version) Patch47: php-8.1.0-phpinfo.patch # Always warn about missing curve_name # Both Fedora and RHEL do not support arbitrary EC parameters Patch48: php-8.3.0-openssl-ec-param.patch # RC Patch Patch91: php-7.2.0-oci8conf.patch # Upstream fixes (100+) # Security fixes (200+) # Fixes for tests (300+) # Factory is droped from system tzdata Patch300: php-7.4.0-datetests.patch # WIP BuildRequires: gnupg2 BuildRequires: bzip2-devel BuildRequires: pkgconfig(libcurl) >= 7.29.0 #BuildRequires: libdb-devel BuildRequires: httpd-devel >= 2.0.46-1 BuildRequires: pam-devel %if %{with_httpd2410} # to ensure we are using httpd with filesystem feature (see #1081453) BuildRequires: httpd-filesystem %endif BuildRequires: %{?dtsprefix}libstdc++-devel # no pkgconfig to avoid compat-openssl10 BuildRequires: openssl3-devel BuildRequires: pkgconfig(sqlite3) >= 3.7.4 BuildRequires: pkgconfig(zlib) >= 1.2.0.4 BuildRequires: smtpdaemon BuildRequires: pkgconfig(libedit) %if %{with libpcre} BuildRequires: pkgconfig(libpcre2-8) >= 10.30 %else Provides: bundled(pcre2) = 10.32 %endif %if %{with libxcrypt} BuildRequires: pkgconfig(libxcrypt) %endif BuildRequires: bzip2 BuildRequires: perl BuildRequires: autoconf >= 2.68 BuildRequires: automake >= 1.13 BuildRequires: make BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?dtsprefix}gcc-c++ BuildRequires: libtool BuildRequires: libtool-ltdl-devel %if %{with dtrace} BuildRequires: systemtap-sdt-devel %endif %if 0%{?gh_date} BuildRequires: bison BuildRequires: re2c >= 1.0.3 %endif # used for tests BuildRequires: /bin/ps %if %{with tzdata} BuildRequires: tzdata %endif Requires: httpd-mmn = %{_httpd_mmn} Provides: %{?scl_prefix}mod_php = %{version}-%{release} Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # To ensure correct /var/lib/php/session ownership: %if %{with_httpd2410} Requires(pre): httpd-filesystem %else Requires(pre): httpd %endif %if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 # For backwards-compatibility, pull the "php" command Recommends: %{?scl_prefix}php-cli%{?_isa} = %{version}-%{release} # httpd have threaded MPM by default Recommends: %{?scl_prefix}php-fpm%{?_isa} = %{version}-%{release} # as "php" is now mostly a meta-package, commonly used extensions Recommends: %{?scl_prefix}php-mbstring%{?_isa} = %{version}-%{release} Recommends: %{?scl_prefix}php-opcache%{?_isa} = %{version}-%{release} Recommends: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Recommends: %{?scl_prefix}php-sodium%{?_isa} = %{version}-%{release} Recommends: %{?scl_prefix}php-xml%{?_isa} = %{version}-%{release} %else # For backwards-compatibility, require php-cli for the time being: Requires: %{?scl_prefix}php-cli%{?_isa} = %{version}-%{release} # For ARGON2 password Requires: %{?scl_prefix}php-sodium%{?_isa} = %{version}-%{release} %endif # Don't provides extensions, or shared libraries (embedded) %{?filter_from_requires: %filter_from_requires /libphp.*so/d} %{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} %{?filter_setup} %description PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. This package contains the module (often referred to as mod_php) which adds support for the PHP language to system Apache HTTP Server. %package cli Summary: Command-line interface for PHP # sapi/cli/ps_title.c is PostgreSQL License: PHP and Zend and BSD and MIT and ASL 1.0 and NCSA and Boost and PostgreSQL Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-cgi = %{version}-%{release}, %{?scl_prefix}php-cgi%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pcntl, %{?scl_prefix}php-pcntl%{?_isa} Provides: %{?scl_prefix}php-readline, %{?scl_prefix}php-readline%{?_isa} %description cli The %{?scl_prefix}php-cli package contains the command-line interface executing PHP scripts, %{_bindir}/php, and the CGI interface. %package dbg Summary: The interactive PHP debugger Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description dbg The %{?scl_prefix}php-dbg package contains the interactive PHP debugger. %package fpm Summary: PHP FastCGI Process Manager BuildRequires: libacl-devel %if 0%{?rhel} >= 7 BuildRequires: pkgconfig(libsystemd) >= 209 %{?systemd_requires} # This is actually needed for the %%triggerun script but Requires(triggerun) # is not valid. We can use %%post because this particular %%triggerun script # should fire just after this package is installed. Requires(post): systemd-sysv %endif BuildRequires: pkgconfig(libselinux) Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %if %{with_httpd2410} # To ensure correct /var/lib/php/session ownership: Requires(pre): httpd-filesystem # For php.conf in /etc/httpd/conf.d # and version 2.4.10 for proxy support in SetHandler Requires: httpd-filesystem >= 2.4.10 %else Requires(pre): %{_root_sbindir}/useradd %endif %description fpm PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. %if %{with lsws} %package litespeed Summary: LiteSpeed Web Server PHP support Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description litespeed The %{?scl_prefix}php-litespeed package provides the %{_bindir}/lsphp command used by the LiteSpeed Web Server (LSAPI enabled PHP). %endif %package embedded Summary: PHP library for embedding in applications Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # doing a real -devel package for just the .so symlink is a bit overkill Provides: %{?scl_prefix}php-embedded-devel = %{version}-%{release} Provides: %{?scl_prefix}php-embedded-devel%{?_isa} = %{version}-%{release} %description embedded The %{?scl_prefix}php-embedded package contains a library which can be embedded into applications to provide PHP scripting language support. %package common Summary: Common files for PHP # All files licensed under PHP version 3.01, except # fileinfo is licensed under PHP version 3.0 # regex, libmagic are licensed under BSD License: PHP and BSD # ABI/API check - Arch specific Provides: %{?scl_prefix}php(api) = %{apiver}-%{__isa_bits} Provides: %{?scl_prefix}php(zend-abi) = %{zendver}-%{__isa_bits} Provides: %{?scl_prefix}php(language) = %{version} Provides: %{?scl_prefix}php(language)%{?_isa} = %{version} # Provides for all builtin/shared modules: Provides: %{?scl_prefix}php-bz2, %{?scl_prefix}php-bz2%{?_isa} Provides: %{?scl_prefix}php-calendar, %{?scl_prefix}php-calendar%{?_isa} Provides: %{?scl_prefix}php-core = %{version}, %{?scl_prefix}php-core%{?_isa} = %{version} Provides: %{?scl_prefix}php-ctype, %{?scl_prefix}php-ctype%{?_isa} Provides: %{?scl_prefix}php-curl, %{?scl_prefix}php-curl%{?_isa} Provides: %{?scl_prefix}php-date, %{?scl_prefix}php-date%{?_isa} Provides: bundled(timelib) Provides: %{?scl_prefix}php-exif, %{?scl_prefix}php-exif%{?_isa} Provides: %{?scl_prefix}php-fileinfo, %{?scl_prefix}php-fileinfo%{?_isa} Provides: bundled(libmagic) = 5.43 Provides: %{?scl_prefix}php-filter, %{?scl_prefix}php-filter%{?_isa} Provides: %{?scl_prefix}php-ftp, %{?scl_prefix}php-ftp%{?_isa} Provides: %{?scl_prefix}php-gettext, %{?scl_prefix}php-gettext%{?_isa} Provides: %{?scl_prefix}php-hash, %{?scl_prefix}php-hash%{?_isa} Provides: %{?scl_prefix}php-mhash = %{version}, %{?scl_prefix}php-mhash%{?_isa} = %{version} Provides: %{?scl_prefix}php-iconv, %{?scl_prefix}php-iconv%{?_isa} Obsoletes: %{?scl_prefix}php-json < 8.0.0 Provides: %{?scl_prefix}php-json = %{upver}, %{?scl_prefix}php-json%{?_isa} = %{upver} Provides: %{?scl_prefix}php-libxml, %{?scl_prefix}php-libxml%{?_isa} Provides: %{?scl_prefix}php-openssl, %{?scl_prefix}php-openssl%{?_isa} Provides: %{?scl_prefix}php-phar, %{?scl_prefix}php-phar%{?_isa} Provides: %{?scl_prefix}php-pcre, %{?scl_prefix}php-pcre%{?_isa} Provides: %{?scl_prefix}php-random, %{?scl_prefix}php-random%{?_isa} Provides: %{?scl_prefix}php-reflection, %{?scl_prefix}php-reflection%{?_isa} Provides: %{?scl_prefix}php-session, %{?scl_prefix}php-session%{?_isa} Provides: %{?scl_prefix}php-sockets, %{?scl_prefix}php-sockets%{?_isa} Provides: %{?scl_prefix}php-spl, %{?scl_prefix}php-spl%{?_isa} Provides: %{?scl_prefix}php-standard = %{version}, %{?scl_prefix}php-standard%{?_isa} = %{version} Provides: %{?scl_prefix}php-tokenizer, %{?scl_prefix}php-tokenizer%{?_isa} Provides: %{?scl_prefix}php-zlib, %{?scl_prefix}php-zlib%{?_isa} Conflicts: isp-php82 >= 8.2.0 %description common The %{?scl_prefix}php-common package contains files used by both the %{?scl_prefix}php package and the %{?scl_prefix}php-cli package. %package devel Summary: Files needed for building PHP extensions Requires: %{?scl_prefix}php-cli%{?_isa} = %{version}-%{release} # always needed to build extension Requires: autoconf >= 2.68 Requires: automake >= 1.13 Requires: make Requires: gcc Requires: gcc-c++ Requires: libtool # see "php-config --libs" Requires: krb5-devel%{?_isa} Requires: libxml2-devel%{?_isa} Requires: openssl-devel%{?_isa} >= 1.0.2 %if %{with libpcre} Requires: pcre2-devel%{?_isa} >= 10.30 %endif Requires: zlib-devel%{?_isa} %if 0%{?fedora} || 0%{?rhel} >= 8 Recommends: php-nikic-php-parser4 >= 4.13.1 %endif %description devel The %{?scl_prefix}php-devel package contains the files needed for building PHP extensions. If you need to compile your own PHP extensions, you will need to install this package. %package opcache Summary: The Zend OPcache License: PHP BuildRequires: pkgconfig(capstone) >= 3.0 Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pecl-zendopcache = %{version} Provides: %{?scl_prefix}php-pecl-zendopcache%{?_isa} = %{version} Provides: %{?scl_prefix}php-pecl(opcache) = %{version} Provides: %{?scl_prefix}php-pecl(opcache)%{?_isa} = %{version} %description opcache The Zend OPcache provides faster PHP execution through opcode caching and optimization. It improves PHP performance by storing precompiled script bytecode in the shared memory. This eliminates the stages of reading code from the disk and compiling it on future access. In addition, it applies a few bytecode optimization patterns that make code execution faster. %if %{with imap} %package imap Summary: A module for PHP applications that use IMAP # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(krb5) BuildRequires: pkgconfig(krb5-gssapi) #BuildRequires: openssl-devel >= 1.0.2 BuildRequires: libc-client-devel %description imap The %{?scl_prefix}php-imap module will add IMAP (Internet Message Access Protocol) support to PHP. IMAP is a protocol for retrieving and uploading e-mail messages on mail servers. PHP is an HTML-embedded scripting language. %endif %package ldap Summary: A module for PHP applications that use LDAP # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(libsasl2) BuildRequires: openldap-devel #BuildRequires: openssl-devel >= 1.0.2 %description ldap The %{?scl_prefix}php-ldap package adds Lightweight Directory Access Protocol (LDAP) support to PHP. LDAP is a set of protocols for accessing directory services over the Internet. PHP is an HTML-embedded scripting language. %package pdo Summary: A database access abstraction module for PHP applications # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} # ABI/API check - Arch specific Provides: %{?scl_prefix}php-pdo-abi = %{pdover}-%{__isa_bits} Provides: %{?scl_prefix}php(pdo-abi) = %{pdover}-%{__isa_bits} %if %{with sqlite3} Provides: %{?scl_prefix}php-sqlite3, %{?scl_prefix}php-sqlite3%{?_isa} %endif Provides: %{?scl_prefix}php-pdo_sqlite, %{?scl_prefix}php-pdo_sqlite%{?_isa} %description pdo The %{?scl_prefix}php-pdo package contains a dynamic shared object that will add a database access abstraction layer to PHP. This module provides a common interface for accessing MySQL, PostgreSQL or other databases. %package mysqlnd Summary: A module for PHP applications that use MySQL databases # All files licensed under PHP version 3.01 License: PHP BuildRequires: mysql8-devel Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-mysqli = %{version}-%{release} Provides: %{?scl_prefix}php-mysqli%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-pdo_mysql, %{?scl_prefix}php-pdo_mysql%{?_isa} %description mysqlnd The %{?scl_prefix}php-mysqlnd package contains a dynamic shared object that will add MySQL database support to PHP. MySQL is an object-relational database management system. PHP is an HTML-embeddable scripting language. If you need MySQL support for PHP applications, you will need to install this package and the php package. This package use the MySQL Native Driver %package pgsql Summary: A PostgreSQL database module for PHP # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_pgsql, %{?scl_prefix}php-pdo_pgsql%{?_isa} BuildRequires: krb5-devel #BuildRequires: openssl-devel >= 1.0.2 BuildRequires: libpq-devel Requires: libpq >= 15 %description pgsql The %{?scl_prefix}php-pgsql package add PostgreSQL database support to PHP. PostgreSQL is an object-relational database management system that supports almost all SQL constructs. PHP is an HTML-embedded scripting language. If you need back-end support for PostgreSQL, you should install this package in addition to the main php package. %package process Summary: Modules for PHP script using system process interfaces # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-posix, %{?scl_prefix}php-posix%{?_isa} Provides: %{?scl_prefix}php-shmop, %{?scl_prefix}php-shmop%{?_isa} Provides: %{?scl_prefix}php-sysvsem, %{?scl_prefix}php-sysvsem%{?_isa} Provides: %{?scl_prefix}php-sysvshm, %{?scl_prefix}php-sysvshm%{?_isa} Provides: %{?scl_prefix}php-sysvmsg, %{?scl_prefix}php-sysvmsg%{?_isa} %description process The %{?scl_prefix}php-process package contains dynamic shared objects which add support to PHP using system interfaces for inter-process communication. %package odbc Summary: A module for PHP applications that use ODBC databases # All files licensed under PHP version 3.01, except # pdo_odbc is licensed under PHP version 3.0 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_odbc, %{?scl_prefix}php-pdo_odbc%{?_isa} # EL-7 version don't have pkgconfig BuildRequires: unixODBC-devel %description odbc The %{?scl_prefix}php-odbc package contains a dynamic shared object that will add database support through ODBC to PHP. ODBC is an open specification which provides a consistent API for developers to use for accessing data sources (which are often, but not always, databases). PHP is an HTML-embeddable scripting language. If you need ODBC support for PHP applications, you will need to install this package and the php package. %package soap Summary: A module for PHP applications that use the SOAP protocol # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(libxml-2.0) %description soap The %{?scl_prefix}php-soap package contains a dynamic shared object that will add support to PHP for using the SOAP web services protocol. %if %{with firebird} %package pdo-firebird Summary: PDO driver for Interbase/Firebird databases # All files licensed under PHP version 3.01 License: PHP BuildRequires: firebird-devel Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_firebird, %{?scl_prefix}php-pdo_firebird%{?_isa} %description pdo-firebird The %{?scl_prefix}php-pdo-firebird package contains the PDO driver for Interbase/Firebird databases. InterBase is the name of the closed-source variant of this RDBMS that was developed by Borland/Inprise. Firebird is a commercially independent project of C and C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Borland Software Corp) under the InterBase Public License. %endif %if %{with oci8} %package oci8 Summary: A module for PHP applications that use OCI8 databases # All files licensed under PHP version 3.01 License: PHP BuildRequires: oracle-instantclient-devel >= %{oraclever} Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php_database Provides: %{?scl_prefix}php-pdo_oci Provides: %{?scl_prefix}php-pdo_oci%{?_isa} Obsoletes: %{?scl_prefix}php-pecl-oci8 <= %{oci8ver} Conflicts: %{?scl_prefix}php-pecl-oci8 > %{oci8ver} Provides: %{?scl_prefix}php-pecl(oci8) = %{oci8ver} Provides: %{?scl_prefix}php-pecl(oci8)%{?_isa} = %{oci8ver} # Should requires libclntsh.so.18.3, but it's not provided by Oracle RPM. AutoReq: 0 %description oci8 The %{?scl_prefix}php-oci8 packages provides the OCI8 extension version %{oci8ver} and the PDO driver to access Oracle Database. The extension is linked with Oracle client libraries %{oraclever} (Oracle Instant Client). For details, see Oracle's note "Oracle Client / Server Interoperability Support" (ID 207303.1). You must install libclntsh.so.%{oraclelib} to use this package, provided in the database installation, or in the free Oracle Instant Client available from Oracle. Notice: - %{?scl_prefix}php-oci8 provides oci8 and pdo_oci extensions from php sources. - %{?scl_prefix}php-pecl-oci8 only provides oci8 extension. Documentation is at http://php.net/oci8 and http://php.net/pdo_oci %endif %package snmp Summary: A module for PHP applications that query SNMP-managed devices # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release}, net-snmp BuildRequires: net-snmp-devel %description snmp The %{?scl_prefix}php-snmp package contains a dynamic shared object that will add support for querying SNMP devices to PHP. PHP is an HTML-embeddable scripting language. If you need SNMP support for PHP applications, you will need to install this package and the php package. %package xml Summary: A module for PHP applications which use XML # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: %{?scl_prefix}php-dom, %{?scl_prefix}php-dom%{?_isa} Provides: %{?scl_prefix}php-domxml, %{?scl_prefix}php-domxml%{?_isa} Provides: %{?scl_prefix}php-simplexml, %{?scl_prefix}php-simplexml%{?_isa} Provides: %{?scl_prefix}php-xmlreader, %{?scl_prefix}php-xmlreader%{?_isa} Provides: %{?scl_prefix}php-xmlwriter, %{?scl_prefix}php-xmlwriter%{?_isa} Provides: %{?scl_prefix}php-xsl, %{?scl_prefix}php-xsl%{?_isa} BuildRequires: pkgconfig(libxslt) >= 1.1 BuildRequires: pkgconfig(libexslt) BuildRequires: pkgconfig(libxml-2.0) >= 2.7.6 %description xml The %{?scl_prefix}php-xml package contains dynamic shared objects which add support to PHP for manipulating XML documents using the DOM tree, and performing XSL transformations on XML documents. %package mbstring Summary: A module for PHP applications which need multi-byte string handling # All files licensed under PHP version 3.01, except # libmbfl is licensed under LGPLv2 # onigurama is licensed under BSD # ucgendat is licensed under OpenLDAP License: PHP and LGPLv2 and BSD and OpenLDAP %if 0%{?rhel} BuildRequires: oniguruma5php-devel %else BuildRequires: oniguruma-devel %endif Provides: bundled(libmbfl) = 1.3.2 Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description mbstring The %{?scl_prefix}php-mbstring package contains a dynamic shared object that will add support for multi-byte string handling to PHP. %package gd Summary: A module for PHP applications for using the gd graphics library # All files licensed under PHP version 3.01 %if %{with libgd} License: PHP %else # bundled libgd is licensed under BSD License: PHP and BSD %endif Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %if %{with libgd} BuildRequires: pkgconfig(gdlib) >= 2.3.3 %else # Required to build the bundled GD library BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(libjpeg) >= 2.0 BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(xpm) BuildRequires: pkgconfig(libwebp) BuildRequires: pkgconfig(libavif) Provides: bundled(gd) = 2.0.35 %endif %description gd The %{?scl_prefix}php-gd package contains a dynamic shared object that will add support for using the gd graphics library to PHP. %package bcmath Summary: A module for PHP applications for using the bcmath library # All files licensed under PHP version 3.01, except # libbcmath is licensed under LGPLv2+ License: PHP and LGPLv2+ Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Provides: bundled(libbcmath) %description bcmath The %{?scl_prefix}php-bcmath package contains a dynamic shared object that will add support for using the bcmath library to PHP. %package gmp Summary: A module for PHP applications for using the GNU MP library # All files licensed under PHP version 3.01 License: PHP BuildRequires: gmp-devel >= 6.0 Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description gmp These functions allow you to work with arbitrary-length integers using the GNU MP library. %package dba Summary: A database abstraction layer module for PHP applications # All files licensed under PHP version 3.01 License: PHP BuildRequires: db4-devel BuildRequires: tokyocabinet-devel BuildRequires: lmdb-devel %if %{with qdbm} BuildRequires: qdbm-devel %endif Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description dba The %{?scl_prefix}php-dba package contains a dynamic shared object that will add support for using the DBA database abstraction layer to PHP. %if %{with tidy} %package tidy Summary: Standard PHP module provides tidy library support # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: libtidy-devel %description tidy The %{?scl_prefix}php-tidy package contains a dynamic shared object that will add support for using the tidy library to PHP. %endif %if %{with freetds} %package pdo-dblib Summary: PDO driver for Microsoft SQL Server and Sybase databases # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-pdo%{?_isa} = %{version}-%{release} BuildRequires: freetds-devel Provides: %{?scl_prefix}php-pdo_dblib, %{?scl_prefix}php-pdo_dblib%{?_isa} %description pdo-dblib The %{?scl_prefix}php-pdo-dblib package contains a dynamic shared object that implements the PHP Data Objects (PDO) interface to enable access from PHP to Microsoft SQL Server and Sybase databases through the FreeTDS library. %endif %package pspell Summary: A module for PHP applications for using pspell interfaces # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: aspell-devel >= 0.50.0 %description pspell The %{?scl_prefix}php-pspell package contains a dynamic shared object that will add support for using the pspell library to PHP. %package intl Summary: Internationalization extension for PHP applications # All files licensed under PHP version 3.01 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(icu-i18n) >= 71 BuildRequires: pkgconfig(icu-io) >= 71 BuildRequires: pkgconfig(icu-uc) >= 71 %description intl The %{?scl_prefix}php-intl package contains a dynamic shared object that will add support for using the ICU library to PHP. %if %{with enchant} %package enchant Summary: Enchant spelling extension for PHP applications # All files licensed under PHP version 3.0 License: PHP Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(enchant-2) %description enchant The %{?scl_prefix}php-enchant package contains a dynamic shared object that will add support for using the enchant library to PHP. %endif %if %{with zip} %package zip Summary: ZIP archive management extension for PHP # All files licensed under PHP version 3.0.1 License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} Obsoletes: php-pecl-zip < %{zipver} Provides: php-pecl(zip) = %{zipver} Provides: php-pecl(zip)%{?_isa} = %{zipver} Provides: php-pecl-zip = %{zipver} Provides: php-pecl-zip%{?_isa} = %{zipver} Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(libzip) >= 0.11 %description zip The %{?scl_prefix}php-zip package provides an extension that will add support for ZIP archive management to PHP. %endif %package sodium Summary: Wrapper for the Sodium cryptographic library # All files licensed under PHP version 3.0.1 License: PHP # Minimal is 1.0.8, 1.0.14 is needed for argon2 password BuildRequires: pkgconfig(libsodium) >= 1.0.18 Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} Obsoletes: %{?scl_prefix}php-pecl-libsodium2 < 3 Provides: %{?scl_prefix}php-pecl(libsodium) = %{version} Provides: %{?scl_prefix}php-pecl(libsodium)%{?_isa} = %{version} %description sodium The %{?scl_prefix}php-sodium package provides a simple, low-level PHP extension for the libsodium cryptographic library. %package ffi Summary: Foreign Function Interface # All files licensed under PHP version 3.0.1 License: PHP BuildRequires: pkgconfig(libffi) Requires: %{?scl_prefix}php-common%{?_isa} = %{version}-%{release} %description ffi FFI is one of the features that made Python and LuaJIT very useful for fast prototyping. It allows calling C functions and using C data types from pure scripting language and therefore develop “system code” more productively. For PHP, FFI opens a way to write PHP extensions and bindings to C libraries in pure PHP. %prep : Building %{name}-%{version}-%{release} %if %{with lsws} : With Litespeed SAPI %endif %if %{with oci8} : With Oracle extensions %endif %if %{with enchant} : With Enchant extensions %endif %if %{with imap} : With Imap extensions %endif %if %{with firebird} : With pdo_firebird extension %endif %if %{with freetds} : With pdo_dblib extension %endif %if %{with sqlite3} : With Sqlite3 extension %endif %if %{with tidy} : With Tidy extension %endif %if %{with zip} : With Zip extension %endif %if %{with tests} : Run Test suite %endif %if %{with libgd} : Use System libgd %else : Use Bundled libgd %endif %if %{with libpcre} : Use System libpcre %else : Use Bundled libpcre %endif %if %{with dtrace} : Enable Dtrace build %endif %if 0%{?gh_date} : no gpg check for git snapshot %else #{?gpgverify:%{gpgverify} --keyring='%{SOURCE20}' --signature='%{SOURCE21}' --data='%{SOURCE0}'} %endif %if 0%{?gh_date} %setup -q -n %{gh_project}-%{gh_commit} %else %setup -q -n php-%{upver}%{?rcver} %endif %patch1 -p1 -b .mpmcheck %patch5 -p1 -b .includedir %patch6 -p1 -b .embed %patch8 -p1 -b .libdb %if 0%{?rhel} == 7 %patch10 -p1 -b .curltls %endif %patch41 -p1 -b .syslib %if %{with tzdata} %patch42 -p1 -b .systzdata %endif %patch44 -p1 -b .headers sed -e 's/php-devel/%{?scl_prefix}php-devel/' -i scripts/phpize.in %if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 %patch45 -p1 -b .ldap_r %endif %patch46 -p1 -b .argon2 %patch47 -p1 -b .phpinfo %patch48 -p1 -b .ec-param %patch91 -p1 -b .remi-oci8 # upstream patches # security patches # Fixes for tests %patch300 -p1 -b .datetests # WIP patch # Prevent %%doc confusion over LICENSE files cp Zend/LICENSE ZEND_LICENSE cp Zend/asm/LICENSE BOOST_LICENSE cp TSRM/LICENSE TSRM_LICENSE cp sapi/fpm/LICENSE fpm_LICENSE cp ext/mbstring/libmbfl/LICENSE libmbfl_LICENSE cp ext/bcmath/libbcmath/LICENSE libbcmath_LICENSE cp ext/date/lib/LICENSE.rst timelib_LICENSE # Multiple builds for multiple SAPIs mkdir \ build-fpm \ build-apache \ build-embedded \ build-cgi # ----- Manage known as failed test ------- # affected by systzdata patch %if %{with tzdata} rm ext/date/tests/timezone_location_get.phpt rm ext/date/tests/bug80963.phpt %endif %if 0%{?fedora} < 36 # need tzdata 2022b rm ext/date/tests/bug33415-2.phpt %endif # too fast builder rm ext/date/tests/bug73837.phpt # fails sometime rm ext/sockets/tests/mcast_ipv?_recv.phpt # Should be skipped but fails sometime rm ext/standard/tests/file/file_get_contents_error001.phpt # cause stack exhausion rm Zend/tests/bug54268.phpt rm Zend/tests/bug68412.phpt # slow and erratic result rm sapi/cli/tests/upload_2G.phpt # tar issue rm ext/zlib/tests/004-mb.phpt # Both Fedora and RHEL do not support arbitrary EC parameters # https://bugzilla.redhat.com/2223953 rm ext/openssl/tests/ecc_custom_params.phpt # Safety check for API version change. pver=$(sed -n '/#define PHP_VERSION /{s/.* "//;s/".*$//;p}' main/php_version.h) if test "x${pver}" != "x%{upver}%{?rcver}%{!?rcver:%{?gh_date:-dev}}"; then : Error: Upstream PHP version is now ${upver}, expecting %{upver}%{?rcver}%{!?rcver:%{?gh_date:-dev}}. : Update the version/rcver macros and rebuild. exit 1 fi vapi=`sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h` if test "x${vapi}" != "x%{apiver}"; then : Error: Upstream API version is now ${vapi}, expecting %{apiver}. : Update the apiver macro and rebuild. exit 1 fi vzend=`sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h` if test "x${vzend}" != "x%{zendver}"; then : Error: Upstream Zend ABI version is now ${vzend}, expecting %{zendver}. : Update the zendver macro and rebuild. exit 1 fi # Safety check for PDO ABI version change vpdo=`sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h` if test "x${vpdo}" != "x%{pdover}"; then : Error: Upstream PDO ABI version is now ${vpdo}, expecting %{pdover}. : Update the pdover macro and rebuild. exit 1 fi # Check for some extension version ver=$(sed -n '/#define PHP_OCI8_VERSION /{s/.* "//;s/".*$//;p}' ext/oci8/php_oci8.h) if test "$ver" != "%{oci8ver}"; then : Error: Upstream OCI8 version is now ${ver}, expecting %{oci8ver}. : Update the oci8ver macro and rebuild. exit 1 fi # https://bugs.php.net/63362 - Not needed but installed headers. # Drop some Windows specific headers to avoid installation, # before build to ensure they are really not needed. rm -f TSRM/tsrm_win32.h \ TSRM/tsrm_config.w32.h \ Zend/zend_config.w32.h \ ext/mysqlnd/config-win.h \ ext/standard/winver.h \ main/win32_internal_function_disabled.h \ main/win95nt.h # Fix some bogus permissions find . -name \*.[ch] -exec chmod 644 {} \; chmod 644 README.* # Create the macros.php files sed -e "s/@PHP_APIVER@/%{apiver}-%{__isa_bits}/" \ -e "s/@PHP_ZENDVER@/%{zendver}-%{__isa_bits}/" \ -e "s/@PHP_PDOVER@/%{pdover}-%{__isa_bits}/" \ -e "s/@PHP_VERSION@/%{upver}/" \ -e "s:@LIBDIR@:%{_libdir}:" \ -e "s:@ETCDIR@:%{_sysconfdir}:" \ -e "s:@INCDIR@:%{_includedir}:" \ -e "s:@BINDIR@:%{_bindir}:" \ -e "s:@SCL@:%{?scl:%{scl}_}:" \ %{SOURCE3} | tee macros.php %if 0%{?fedora} >= 24 || 0%{?rhel} >= 8 echo '%%%{?scl:%{scl}_}pecl_xmldir %{_localstatedir}/lib/php/peclxml' | tee -a macros.php %endif # Some extensions have their own configuration file cp %{SOURCE50} %{SOURCE51} %{SOURCE52} %{SOURCE53} . sed -e 's:%{_root_sysconfdir}:%{_sysconfdir}:' \ -i 10-opcache.ini sed -e 's:%{_root_datadir}:%{_datadir}:' \ -i 20-ffi.ini %if 0%{!?scl:1} : SCL macro not defined exit 1 %endif %build # This package fails to build with LTO due to undefined symbols. LTO # was disabled in OpenSuSE as well, but with no real explanation why # beyond the undefined symbols. It really shold be investigated further. # Disable LTO %define _lto_cflags %{nil} #. /opt/rh/%{dtsname}/enable # Set build date from https://reproducible-builds.org/specs/source-date-epoch/ export SOURCE_DATE_EPOCH=$(date +%s -r NEWS) export PHP_UNAME=$(uname) export PHP_BUILD_SYSTEM=$(cat /etc/redhat-release | sed -e 's/ Beta//') %if 0%{?vendor:1} export PHP_BUILD_PROVIDER="%{vendor}" %endif export PHP_BUILD_COMPILER="$(gcc --version | head -n1)" export PHP_BUILD_ARCH="%{_arch}" # Force use of system libtool: libtoolize --force --copy cat $(aclocal --print-ac-dir)/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >build/libtool.m4 %if 0%{?gh_date} # Bison files scripts/dev/genfiles %endif # Regenerate configure scripts (patches change config.m4's) touch configure.ac ./buildconf --force CFLAGS="-I/opt/rx/includes $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-pointer-sign" export CFLAGS LDFLAGS="-L%{_root_libdir}/pgsql -Wl,-rpath=%{_root_libdir}/pgsql -L/opt/rx/lib -Wl,-rpath=/opt/rx/lib $_LDFLAGS" export LDFLAGS export PKG_CONFIG_PATH=/opt/rx/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}} # Install extension modules in %{_libdir}/php/modules. EXTENSION_DIR=%{_libdir}/php/modules; export EXTENSION_DIR # Set PEAR_INSTALLDIR to ensure that the hard-coded include_path # includes the PEAR directory even though pear is packaged # separately. PEAR_INSTALLDIR=%{_datadir}/pear; export PEAR_INSTALLDIR # Shell function to configure and build a PHP tree. build() { # Old/recent bison version seems to produce a broken parser; # upstream uses GNU Bison 2.3. Workaround: mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend # Always static: # date, filter, libxml, reflection, spl: not supported # hash: for PHAR_SIG_SHA256 and PHAR_SIG_SHA512 # session: dep on hash, used by soap # pcre: used by filter, zip # pcntl, readline: only used by CLI sapi # openssl: for PHAR_SIG_OPENSSL # zlib: used by image ln -sf ../configure %configure \ --enable-rtld-now \ --cache-file=../config.cache \ --with-libdir=%{_lib} \ --with-config-file-path=%{_sysconfdir} \ --with-config-file-scan-dir=%{_sysconfdir}/php.d \ --disable-debug \ --with-pic \ --disable-rpath \ --without-pear \ --with-exec-dir=%{_bindir} \ --without-gdbm \ --with-openssl \ --with-system-ciphers \ %if %{with libpcre} --with-external-pcre \ %endif %if %{with libxcrypt} --with-external-libcrypt \ %endif --with-zlib \ --with-layout=GNU \ --with-kerberos \ --with-libxml \ %if %{with tzdata} --with-system-tzdata \ %endif --with-mhash \ --without-password-argon2 \ %if %{with dtrace} --enable-dtrace \ %endif $* if test $? != 0; then tail -500 config.log : configure failed exit 1 fi make %{?_smp_mflags} } # Build /usr/bin/php-cgi with the CGI SAPI, and most the shared extensions pushd build-cgi build --libdir=%{_libdir}/php \ --enable-pcntl \ --enable-opcache \ --enable-opcache-file \ --with-capstone \ --enable-phpdbg \ %if %{with imap} --with-imap=shared --with-imap-ssl \ %endif --enable-mbstring=shared \ --enable-mbregex \ --enable-gd=shared \ %if %{with libgd} --with-external-gd \ %else --with-webp \ --with-jpeg \ --with-xpm \ --with-freetype \ %endif --with-gmp=shared \ --enable-calendar=shared \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-ctype=shared \ --enable-dba=shared \ --with-tcadb=%{_root_prefix} \ --with-lmdb=%{_root_prefix} \ %if %{with qdbm} --with-qdbm=%{_root_prefix} \ %endif --enable-exif=shared \ --enable-ftp=shared \ --with-gettext=shared \ --with-iconv=shared \ --enable-sockets=shared \ --enable-tokenizer=shared \ --with-ldap=shared --with-ldap-sasl \ --enable-mysqlnd=shared,%{_mysql_dir} \ --with-mysqli=shared,mysqlnd \ --with-mysql-sock=%{mysql_sock} \ %if %{with oci8} --with-oci8=shared,instantclient,%{_root_libdir}/oracle/%{oraclever}/client64/lib,%{oraclever} \ --with-pdo-oci=shared,instantclient,%{_root_libdir}/oracle/%{oraclever}/client64/lib,%{oraclever} \ %endif %if %{with firebird} --with-pdo-firebird=shared \ %endif --enable-dom=shared \ --with-pgsql=shared \ --enable-simplexml=shared \ --enable-xml=shared \ --with-snmp=shared,%{_root_prefix} \ --enable-soap=shared \ --with-xsl=shared,%{_root_prefix} \ --enable-xmlreader=shared --enable-xmlwriter=shared \ --with-curl=shared \ --enable-pdo=shared \ --with-pdo-odbc=shared,unixODBC,%{_root_prefix} \ --with-pdo-mysql=shared,mysqlnd \ --with-pdo-pgsql=shared,%{_root_prefix} \ --with-pdo-sqlite=shared \ %if %{with sqlite3} --with-sqlite3=shared \ %else --without-sqlite3 \ %endif %if %{with zip} --with-zip=shared \ %endif --without-readline \ --with-libedit \ --with-pspell=shared \ --enable-phar=shared \ %if %{with tidy} --with-tidy=shared,%{_root_prefix} \ %endif %if %{with freetds} --with-pdo-dblib=shared,%{_root_prefix} \ %endif --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ --enable-shmop=shared \ --enable-posix=shared \ --with-unixODBC=shared,%{_root_prefix} \ --enable-intl=shared \ %if %{with enchant} --with-enchant=shared \ %endif --enable-fileinfo=shared \ --with-ffi=shared \ --with-sodium=shared popd without_shared="--disable-gd \ --disable-dom --disable-dba --without-unixODBC \ --disable-opcache \ --disable-phpdbg \ --without-ffi \ --disable-xmlreader --disable-xmlwriter \ --without-sodium \ --without-sqlite3 --disable-phar --disable-fileinfo \ --without-pspell \ --without-curl --disable-posix --disable-xml \ --disable-simplexml --disable-exif --without-gettext \ --without-iconv --disable-ftp --without-bz2 --disable-ctype \ --disable-shmop --disable-sockets --disable-tokenizer \ --disable-sysvmsg --disable-sysvshm --disable-sysvsem" # Build Apache module, and the CLI SAPI, /usr/bin/php pushd build-apache build --with-apxs2=%{_httpd_apxs} \ --libdir=%{_libdir}/php \ %if %{with lsws} --enable-litespeed \ %endif --without-mysqli \ --disable-pdo \ ${without_shared} popd # Build php-fpm pushd build-fpm build --enable-fpm \ %if 0%{?rhel} >= 7 --with-fpm-systemd \ %endif --with-fpm-selinux \ --with-fpm-acl \ --libdir=%{_libdir}/php \ --without-mysqli \ --disable-pdo \ ${without_shared} popd # Build for inclusion as embedded script language into applications, # /usr/lib[64]/libphp.so pushd build-embedded build --enable-embed \ --without-mysqli \ --disable-pdo \ ${without_shared} popd %check %if %{with tests} cd build-fpm # Run tests, using the CLI SAPI export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 export SKIP_ONLINE_TESTS=1 export SKIP_IO_CAPTURE_TESTS=1 unset TZ LANG LC_ALL if ! make test TESTS=-j4; then set +x for f in $(find .. -name \*.diff -type f -print); do if ! grep -q XFAIL "${f/.diff/.phpt}" then echo "TEST FAILURE: $f --" head -n 100 "$f" echo -e "\n-- $f result ends." fi done set -x #exit 1 fi unset NO_INTERACTION REPORT_EXIT_STATUS MALLOC_CHECK_ %endif %install %{?dtsenable} # Install the version for embedded script language in applications + php_embed.h make -C build-embedded install-sapi install-headers \ INSTALL_ROOT=$RPM_BUILD_ROOT # Install the php-fpm binary make -C build-fpm install-fpm \ INSTALL_ROOT=$RPM_BUILD_ROOT # Install everything from the CGI SAPI build make -C build-cgi install \ INSTALL_ROOT=$RPM_BUILD_ROOT # Use php-config from embed SAPI to reduce used libs install -m 755 build-embedded/scripts/php-config $RPM_BUILD_ROOT%{_bindir}/php-config # Install the default configuration file install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/ install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/php.ini sed -e 's:%{_root_sysconfdir}:%{_sysconfdir}:' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php.ini # For third-party packaging: install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/php/preload # install the DSO install -m 755 -d $RPM_BUILD_ROOT%{_httpd_moddir} install -m 755 build-apache/libs/libphp.so $RPM_BUILD_ROOT%{_httpd_moddir} # Apache config fragment %if %{?scl:1}0 sed -e 's/libphp/lib%{scl}/' %{SOURCE9} >modconf install -m 755 -d $RPM_BUILD_ROOT%{_root_httpd_moddir} ln -s %{_httpd_moddir}/libphp.so $RPM_BUILD_ROOT%{_root_httpd_moddir}/lib%{scl}.so %else cp %{SOURCE9} modconf %endif # Dual config file with httpd >= 2.4 (RHEL >= 7) install -D -m 644 modconf $RPM_BUILD_ROOT%{_httpd_modconfdir}/20-%{name}.conf install -D -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %if %{with_httpd2410} cat %{SOURCE10} >>$RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %endif sed -e 's:/var/lib:%{_localstatedir}/lib:' \ -i $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/session install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/wsdlcache install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/opcache install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lock/subsys %if 0%{?fedora} >= 24 || 0%{?rhel} >= 8 install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/peclxml install -m 755 -d $RPM_BUILD_ROOT%{_docdir}/pecl install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/tests/pecl %endif %if %{with lsws} install -m 755 build-apache/sapi/litespeed/php $RPM_BUILD_ROOT%{_bindir}/lsphp %endif # PHP-FPM stuff # Log install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/log/php-fpm install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/run/php-fpm # Config install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -e 's:/etc:%{_sysconfdir}:' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf sed -e 's:/var/lib:%{_localstatedir}/lib:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf mv $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf.default . mv $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf.default . %if 0%{?rhel} >= 7 # tmpfiles.d # install -m 755 -d $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d # install -m 644 php-fpm.tmpfiles $RPM_BUILD_ROOT%{_prefix}/lib/tmpfiles.d/php-fpm.conf # install systemd unit files and scripts for handling server startup install -Dm 644 %{SOURCE6} $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}php-fpm.service %if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 install -Dm 644 %{SOURCE12} $RPM_BUILD_ROOT%{_unitdir}/httpd.service.d/%{?scl_prefix}php-fpm.conf install -Dm 644 %{SOURCE12} $RPM_BUILD_ROOT%{_unitdir}/nginx.service.d/%{?scl_prefix}php-fpm.conf sed -e 's/php-fpm/%{?scl_prefix}php-fpm/' -i $RPM_BUILD_ROOT%{_unitdir}/*.service.d/%{?scl_prefix}php-fpm.conf %endif sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/etc/sysconfig:%{_sysconfdir}/sysconfig:' \ -e 's:php-fpm.service:%{?scl_prefix}php-fpm.service:' \ -e 's:/usr/sbin:%{_sbindir}:' \ -i $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}php-fpm.service # this folder requires systemd >= 204 install -m 755 -d $RPM_BUILD_ROOT%{_root_sysconfdir}/systemd/system/%{?scl_prefix}php-fpm.service.d %else install -m 755 -d $RPM_BUILD_ROOT%{_initrddir} install -Dm 755 %{SOURCE13} $RPM_BUILD_ROOT%{_initrddir}/%{?scl_prefix}php-fpm sed -e 's:/var/run:%{_localstatedir}/run:' \ -e 's:/etc/sysconfig/php-fpm:%{_root_sysconfdir}/sysconfig/%{scl_prefix}php-fpm:' \ -e 's:/var/lock:%{_localstatedir}/lock:' \ -e 's:prog="php-fpm":prog="%{?scl_prefix}php-fpm":' \ -e 's:/usr/sbin:%{_sbindir}:' \ -i $RPM_BUILD_ROOT%{_initrddir}/%{?scl_prefix}php-fpm %endif %if %{with_httpd2410} # Switch to UDS # FPM sed -e 's@127.0.0.1:9000@%{_localstatedir}/run/php-fpm/www.sock@' \ -e 's@^;listen.acl_users@listen.acl_users@' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf # Apache sed -e 's@proxy:fcgi://127.0.0.1:9000@proxy:unix:%{_localstatedir}/run/php-fpm/www.sock|fcgi://localhost@' \ -i $RPM_BUILD_ROOT%{_httpd_confdir}/%{name}.conf %endif # LogRotate install -m 755 -d $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm sed -e 's:/run:%{_localstatedir}/run:' \ -e 's:/var/log:%{_localstatedir}/log:' \ -i $RPM_BUILD_ROOT%{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm # Environment file %if 0%{?fedora} >= 26 || 0%{?rhel} >= 8 sed -e '/EnvironmentFile/d' -i $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}php-fpm.service %else install -m 755 -d $RPM_BUILD_ROOT%{_root_sysconfdir}/sysconfig install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_root_sysconfdir}/sysconfig/%{scl_prefix}php-fpm sed -e 's:php-fpm.service:%{?scl_prefix}php-fpm.service:' \ -i $RPM_BUILD_ROOT%{_root_sysconfdir}/sysconfig/%{scl_prefix}php-fpm %endif # make the cli commands available in standard root for SCL build %if 0%{?scl:1} install -m 755 -d $RPM_BUILD_ROOT%{_root_bindir} ln -s %{_bindir}/php $RPM_BUILD_ROOT%{_root_bindir}/%{scl} ln -s %{_bindir}/php-cgi $RPM_BUILD_ROOT%{_root_bindir}/%{scl}-cgi ln -s %{_bindir}/phar.phar $RPM_BUILD_ROOT%{_root_bindir}/%{scl_prefix}phar ln -s %{_bindir}/phpdbg $RPM_BUILD_ROOT%{_root_bindir}/%{scl_prefix}phpdbg %if %{with lsws} ln -s %{_bindir}/lsphp $RPM_BUILD_ROOT%{_root_bindir}/ls%{scl} %endif %endif TESTCMD="$RPM_BUILD_ROOT%{_bindir}/php --no-php-ini" # Ensure all provided extensions are really there for mod in core date filter hash json libxml openssl pcntl pcre readline reflection session spl standard zlib do $TESTCMD --modules | grep -i "$mod\$" done TESTCMD="$TESTCMD --define extension_dir=$RPM_BUILD_ROOT%{_libdir}/php/modules" # Generate files lists and stub .ini files for each subpackage for mod in pgsql odbc ldap snmp \ mysqlnd mysqli \ %if %{with imap} imap \ %endif mbstring gd dom xsl soap bcmath dba \ simplexml bz2 calendar ctype exif ftp gettext gmp iconv \ sockets tokenizer opcache \ pdo \ %if %{with sqlite3} sqlite3 \ %endif %if %{with enchant} enchant \ %endif ffi \ phar fileinfo intl \ %if %{with tidy} tidy \ %endif %if %{with zip} zip \ %endif sodium \ pspell curl xml \ posix shmop sysvshm sysvsem sysvmsg \ pdo_mysql pdo_pgsql pdo_odbc pdo_sqlite \ %if %{with oci8} oci8 pdo_oci \ %endif %if %{with firebird} pdo_firebird \ %endif %if %{with freetds} pdo_dblib \ %endif xmlreader xmlwriter do # for extension load order case $mod in opcache) # Zend extensions TESTCMD="$TESTCMD --define zend_extension=$mod" ini=10-${mod}.ini;; pdo_*|mysqli|xmlreader) # Extensions with dependencies on 20-* TESTCMD="$TESTCMD --define extension=$mod" ini=30-${mod}.ini;; *) TESTCMD="$TESTCMD --define extension=$mod" # Extensions with no dependency ini=20-${mod}.ini;; esac $TESTCMD --modules | grep -i "$mod\$" # some extensions have their own config file if [ -f ${ini} ]; then cp -p ${ini} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} else cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} < files.${mod} <> files.xml # mysqlnd cat files.mysqli \ files.pdo_mysql \ >> files.mysqlnd # Split out the PDO modules cat files.pdo_pgsql >> files.pgsql cat files.pdo_odbc >> files.odbc %if %{with oci8} cat files.pdo_oci >> files.oci8 %endif # sysv* and posix in packaged in php-process cat files.shmop files.sysv* files.posix > files.process # Package sqlite3 and pdo_sqlite with pdo; isolating the sqlite dependency # isn't useful at this time since rpm itself requires sqlite. cat files.pdo_sqlite >> files.pdo %if %{with sqlite3} cat files.sqlite3 >> files.pdo %endif # Package curl, phar and fileinfo in -common. cat files.curl files.phar files.fileinfo \ files.exif files.gettext files.iconv files.calendar \ files.ftp files.bz2 files.ctype files.sockets \ files.tokenizer > files.common # The default Zend OPcache blacklist file install -m 644 opcache-default.blacklist $RPM_BUILD_ROOT%{_sysconfdir}/php.d/opcache-default.blacklist # Install the macros file: install -m 644 -D macros.php \ $RPM_BUILD_ROOT%{macrosdir}/macros.%{name} # Remove unpackaged files rm -rf $RPM_BUILD_ROOT%{_libdir}/php/modules/*.a \ $RPM_BUILD_ROOT%{_bindir}/{phptar} \ $RPM_BUILD_ROOT%{_datadir}/pear \ $RPM_BUILD_ROOT%{_libdir}/libphp.a \ $RPM_BUILD_ROOT%{_libdir}/libphp.la # Remove irrelevant docs rm -f README.{Zeus,QNX,CVS-RULES} %if ! %{with_httpd2410} %pre fpm # Add the "apache" user (to avoid pulling httpd in our dep) getent group apache >/dev/null || \ groupadd -g 48 -r apache getent passwd apache >/dev/null || \ useradd -r -u 48 -g apache -s /sbin/nologin \ -d %{_httpd_contentdir} -c "Apache" apache exit 0 %endif %post fpm %if 0%{?rhel} >= 7 %systemd_post %{?scl:%{scl}-}php-fpm.service %endif %preun fpm %if 0%{?rhel} >= 7 %systemd_preun %{?scl:%{scl}-}php-fpm.service %else if [ $1 = 0 ]; then # Package removal, not upgrade /sbin/service %{?scl_prefix}php-fpm stop >/dev/null 2>&1 /sbin/chkconfig --del %{?scl_prefix}php-fpm fi %endif %if 0%{?fedora} < 27 && 0%{?rhel} < 8 %postun fpm %if 0%{?rhel} >= 7 %systemd_postun_with_restart %{?scl:%{scl}-}php-fpm.service %else if [ $1 -ge 1 ]; then /sbin/service %{?scl_prefix}php-fpm condrestart >/dev/null 2>&1 || : fi %endif %endif %if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 # Raised by new pool installation or new extension installation %transfiletriggerin fpm -- %{_sysconfdir}/php-fpm.d %{_sysconfdir}/php.d systemctl try-restart %{?scl:%{scl}-}php-fpm.service >/dev/null 2>&1 || : %endif # Handle upgrading from SysV initscript to native systemd unit. # We can tell if a SysV version of php-fpm was previously installed by # checking to see if the initscript is present. %if 0%{?rhel} >= 7 %triggerun fpm -- %{?scl_prefix}php-fpm if [ -f /etc/rc.d/init.d/%{?scl_prefix}php-fpm ]; then # Save the current service runlevel info # User must manually run systemd-sysv-convert --apply php-fpm # to migrate them to systemd targets /usr/bin/systemd-sysv-convert --save %{?scl_prefix}php-fpm >/dev/null 2>&1 || : # Run these because the SysV package being removed won't do them /sbin/chkconfig --del %{?scl_prefix}php-fpm >/dev/null 2>&1 || : /bin/systemctl try-restart %{?scl_prefix}php-fpm.service >/dev/null 2>&1 || : fi %endif %if 0%{?fedora} < 28 && 0%{?rhel} < 8 %post embedded -p /sbin/ldconfig %postun embedded -p /sbin/ldconfig %endif %{!?_licensedir:%global license %%doc} %files %{_httpd_moddir}/libphp.so %if 0%{?scl:1} %dir %{_libdir}/httpd %dir %{_libdir}/httpd/modules %{_root_httpd_moddir}/lib%{scl}.so %endif %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/opcache %config(noreplace) %{_httpd_confdir}/%{name}.conf %config(noreplace) %{_httpd_modconfdir}/20-%{name}.conf %files common -f files.common %doc EXTENSIONS NEWS UPGRADING* README.REDIST.BINS *md docs %license LICENSE TSRM_LICENSE ZEND_LICENSE BOOST_LICENSE %license timelib_LICENSE %doc php.ini-* %config(noreplace) %{_sysconfdir}/php.ini %dir %{_sysconfdir}/php.d %dir %{_libdir}/php %dir %{_libdir}/php/modules %dir %{_localstatedir}/lib/php %dir %{_datadir}/php %if 0%{?fedora} >= 24 || 0%{?rhel} >= 8 %dir %{_localstatedir}/lib/php/peclxml %dir %{_docdir}/pecl %dir %{_datadir}/tests %dir %{_datadir}/tests/pecl %endif %files cli %{_bindir}/php %{_bindir}/php-cgi %{_bindir}/phar.phar %{_bindir}/phar # provides phpize here (not in -devel) for pecl command %{_bindir}/phpize %{_mandir}/man1/php.1* %{_mandir}/man1/php-cgi.1* %{_mandir}/man1/phar.1* %{_mandir}/man1/phar.phar.1* %{_mandir}/man1/phpize.1* %if 0%{?scl:1} %{_root_bindir}/%{scl} %{_root_bindir}/%{scl}-cgi %{_root_bindir}/%{scl_prefix}phar %endif %files dbg %{_bindir}/phpdbg %{_mandir}/man1/phpdbg.1* %doc sapi/phpdbg/CREDITS %if 0%{?scl:1} %{_root_bindir}/%{scl_prefix}phpdbg %endif %files fpm %doc php-fpm.conf.default www.conf.default %license fpm_LICENSE %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache %attr(0770,root,apache) %dir %{_localstatedir}/lib/php/opcache %attr(0770,root,apache) %dir %{_localstatedir}/lock/subsys %if %{with_httpd2410} %config(noreplace) %{_httpd_confdir}/%{name}.conf %endif %config(noreplace) %{_sysconfdir}/php-fpm.conf %config(noreplace) %{_sysconfdir}/php-fpm.d/www.conf %config(noreplace) %{_root_sysconfdir}/logrotate.d/%{?scl_prefix}php-fpm %if 0%{?fedora} < 26 && 0%{?rhel} < 8 %config(noreplace) %{_root_sysconfdir}/sysconfig/%{scl_prefix}php-fpm %endif %if 0%{?rhel} >= 7 # {_prefix}/lib/tmpfiles.d/php-fpm.conf %{_unitdir}/%{?scl_prefix}php-fpm.service %dir %{_root_sysconfdir}/systemd/system/%{?scl_prefix}php-fpm.service.d %if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 %{_unitdir}/httpd.service.d/%{?scl_prefix}php-fpm.conf %{_unitdir}/nginx.service.d/%{?scl_prefix}php-fpm.conf %endif %else %{_initrddir}/%{?scl_prefix}php-fpm %endif %{_sbindir}/php-fpm %dir %{_sysconfdir}/php-fpm.d # log owned by apache for log %attr(770,apache,root) %dir %{_localstatedir}/log/php-fpm %dir %{_localstatedir}/run/php-fpm %{_mandir}/man8/php-fpm.8* %dir %{_datadir}/fpm %{_datadir}/fpm/status.html %if %{with lsws} %files litespeed %{_bindir}/lsphp %if 0%{?scl:1} %{_root_bindir}/ls%{scl} %endif %endif %files embedded %{_libdir}/libphp.so %{_libdir}/libphp-%{embed_version}.so %files devel %{_bindir}/php-config %{_includedir}/php %{_libdir}/php/build %{_mandir}/man1/php-config.1* %{macrosdir}/macros.%{name} %files pgsql -f files.pgsql %files odbc -f files.odbc %if %{with imap} %files imap -f files.imap %endif %files ldap -f files.ldap %files snmp -f files.snmp %files xml -f files.xml %files mbstring -f files.mbstring %license libmbfl_LICENSE %files gd -f files.gd %files soap -f files.soap %files bcmath -f files.bcmath %license libbcmath_LICENSE %files gmp -f files.gmp %files dba -f files.dba %files pdo -f files.pdo %if %{with tidy} %files tidy -f files.tidy %endif %if %{with freetds} %files pdo-dblib -f files.pdo_dblib %endif %files pspell -f files.pspell %files intl -f files.intl %files process -f files.process %if %{with firebird} %files pdo-firebird -f files.pdo_firebird %endif %if %{with enchant} %files enchant -f files.enchant %endif %files mysqlnd -f files.mysqlnd %files opcache -f files.opcache %config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist %if %{with oci8} %files oci8 -f files.oci8 %endif %if %{with zip} %files zip -f files.zip %endif %files sodium -f files.sodium %files ffi -f files.ffi %dir %{_datadir}/php/preload %changelog * Thu Apr 11 2024 Raven - 8.3.6-1 - update to 8.3.6 * Thu Mar 21 2024 Raven - 8.3.4-1 - update to 8.3.4 * Wed Feb 28 2024 Raven - 8.3.3-1 - update to 8.3.3 * Mon Jan 22 2024 Raven - 8.3.2-1 - initial release