# TODO
+# - lost patches:
+# +Patch11: %{name}-acam.patch
+# +Patch13: %{name}-tsrmlsfetchgcc2.patch
+# +Patch16: %{name}-sybase-fix.patch
+# +Patch26: %{name}-pear.patch
+# +Patch28: %{name}-bug-42952.patch
+# +Patch30: %{name}-apr-apu.patch
+# +Patch31: %{name}-fcgi-error_log-no-newlines.patch
+# +Patch32: %{name}-curl-limit-speed.patch
+# +Patch33: %{name}-mime_magic.patch
+# +Patch34: %{name}-libtool.patch
+# +Patch36: %{name}-mysql-charsetphpini.patch
+# +Patch37: %{name}-mysqli-charsetphpini.patch
+# +Patch38: %{name}-pdo_mysql-charsetphpini.patch
+# +Patch44: %{name}-include_path.patch
+# +Patch45: %{name}-imap-annotations.patch
+# +Patch46: %{name}-imap-myrights.patch
+# - php CLI has safe mode enabled off the box
# - deal with modules removed from php and not moved to PECL, still not obsoleted anywhere
# - removed from php 5.0 (currently in php4):
# db, hyperwave, java, mcal, overload, qtdom
# - removed from php 5.3:
# dbase, mime_magic, ming, ncurses, sybase
# - make additional headers and checking added by mail patch configurable
-# - modularize session, standard (output from pure php -m)?
+# - modularize standard (output from pure php -m)?
# - lib64 patch obsolete by $PHP_LIBDIR ?
-# - move mysqlnd out of libphp-common.so?
+# - move mysqlnd out of libphp-common.so, or link again with mysql-devel?
# - WARNING: Phar: sha256/sha512 signature support disabled if ext/hash is
# built shared, also PHAR_HAVE_OPENSSL is false if openssl is built shared.
# make it runtime dep and add Suggests (or php warning messages)
#+ereg
# libxml
#+mysqlnd
-# pcre
# Reflection
-# session
#
# Conditional build:
%bcond_with fdf # with FDF (PDF forms) module (BR: proprietary lib)
%bcond_with interbase_inst # use InterBase install., not Firebird (BR: proprietary libs)
%bcond_with oci8 # with Oracle oci8 extension module (BR: proprietary libs)
%bcond_with system_gd # with system gd (we prefer internal since it enables few more features)
+%bcond_with litespeed # build litespeed module
%bcond_without curl # without CURL extension module
%bcond_without filter # without filter extension module
%bcond_without imap # without IMAP extension module
%bcond_without mysqli # without mysqli support (Requires mysql > 4.1)
%bcond_without odbc # without ODBC extension module
%bcond_without openssl # without OpenSSL support and OpenSSL extension (module)
+%bcond_without pcre # without PCRE extension module
%bcond_without pgsql # without PostgreSQL extension module
%bcond_without phar # without phar extension module
%bcond_without pspell # without pspell extension module
%bcond_without zts # disable Zend Thread Safety
%bcond_without fpm # fpm patches from http://www.php-fpm.org/
%bcond_without suhosin # with suhosin patch
-%bcond_with tests # default off; test process very often hangs on buildersl; perform "make test"
+%bcond_with tests # default off; test process very often hangs on builders; perform "make test"
%bcond_with type_hints # experimental support for strict typing/casting
%define apxs1 /usr/sbin/apxs1
%undefine with_interbase
%endif
-%ifnarch %{ix86} %{x8664} sparc sparcv9
+%ifnarch %{ix86} %{x8664}
# unsupported, see sapi/cgi/fpm/fpm_atomic.h
%undefine with_fpm
%endif
ERROR: You need to select at least one Apache SAPI to build shared modules.
%endif
-%define rel 1
+# filter depends on pcre
+%if %{without pcre}
+%undefine with_filter
+%endif
+
+%define rel 1.12
Summary: PHP: Hypertext Preprocessor
Summary(fr.UTF-8): Le langage de script embarque-HTML PHP
Summary(pl.UTF-8): Język skryptowy PHP
Patch4: %{name}-libpq_fs_h_path.patch
Patch5: %{name}-filter-shared.patch
Patch6: %{name}-build_modules.patch
-Patch7: %{name}-config-file-scan-dir.patch
-Patch8: %{name}-sapi-ini-file.patch
+Patch7: %{name}-sapi-ini-file.patch
+Patch8: %{name}-config-file-scan-dir.patch
Patch9: %{name}-sh.patch
Patch10: %{name}-ini.patch
-Patch11: extension-shared-optional-dep.patch
+# untill 5.3.2 when this gets released
+Patch11: %{name}-bug-50458.patch
+%if %{with type_hints}
+Patch12: http://ilia.ws/patch/type_hint_53_v2.txt
+%endif
Patch14: %{name}-no_pear_install.patch
Patch15: %{name}-zlib.patch
Patch17: %{name}-readline.patch
Patch19: %{name}-gd_imagerotate_enable.patch
Patch20: %{name}-uint32_t.patch
Patch21: %{name}-dba-link.patch
-Patch23: %{name}-both-apxs.patch
-Patch24: %{name}-builddir.patch
-Patch25: %{name}-zlib-for-getimagesize.patch
-Patch29: %{name}-config-dir.patch
-Patch30: %{name}-silent-session-cleanup.patch
-Patch31: %{name}-fcgi-graceful.patch
-Patch32: %{name}-m4-divert.patch
-Patch38: %{name}-tds.patch
-Patch39: %{name}-stupidapache_version.patch
+Patch22: %{name}-both-apxs.patch
+Patch23: %{name}-builddir.patch
+Patch24: %{name}-zlib-for-getimagesize.patch
+Patch25: %{name}-stupidapache_version.patch
+Patch27: %{name}-config-dir.patch
+Patch29: %{name}-fcgi-graceful.patch
+Patch35: %{name}-tds.patch
+Patch39: %{name}-use-prog_sendmail.patch
Patch40: %{name}-fpm.patch
-#Patch41: %{name}-fpm-config.patch
-#Patch42: %{name}-fpm-initdir.patch
-Patch43: %{name}-use-prog_sendmail.patch
-Patch44: %{name}-fpm-shared.patch
+Patch41: %{name}-fpm-config.patch
+Patch42: %{name}-fpm-shared.patch
+Patch43: %{name}-silent-session-cleanup.patch
Patch47: suhosin.patch
-%if %{with type_hints}
-Patch50: http://ilia.ws/patch/type_hint_53_v2.txt
-%endif
+Patch49: %{name}-m4-divert.patch
+Patch50: extension-shared-optional-dep.patch
+Patch51: spl-shared.patch
+Patch52: pcre-shared.patch
URL: http://www.php.net/
%{?with_interbase:%{!?with_interbase_inst:BuildRequires: Firebird-devel >= 1.0.2.908-2}}
%{?with_pspell:BuildRequires: aspell-devel >= 2:0.50.0}
BuildRequires: cyrus-sasl-devel
BuildRequires: db-devel >= 4.0
BuildRequires: elfutils-devel
+BuildRequires: fcgi-devel
%{?with_fdf:BuildRequires: fdftk-devel}
BuildRequires: flex
-Requires: fcgi-devel
+BuildRequires: pkgconfig
%if %{with mssql} || %{with sybase_ct}
BuildRequires: freetds-devel >= 0.82
%endif
%endif
%{?with_snmp:BuildRequires: net-snmp-devel >= 5.0.7}
BuildRequires: pam-devel
-BuildRequires: pcre-devel >= 6.6
+%{?with_pcre:BuildRequires: pcre-devel >= 6.6}
%{?with_pgsql:BuildRequires: postgresql-backend-devel >= 7.2}
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
%description -n apache-mod_php -l pl.UTF-8
php jako moduł DSO (Dynamic Shared Object) dla apache 2.x.
+%package litespeed
+Summary: PHP for litespeed http server
+Summary(pl.UTF-8): PHP dla serwera http litespeed
+Group: Development/Languages/PHP
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: litespeed
+Provides: webserver(php) = %{version}
+
+%description litespeed
+PHP for litespeed http server.
+
+%description litespeed -l pl.UTF-8
+PHP dla serwera http litespeed.
+
%package cgi
Summary: PHP as CGI/FastCGI program
Summary(pl.UTF-8): PHP jako program CGI/FastCGI
Provides: php(libxml)
Provides: php(modules_api) = %{php_api_version}
Provides: php(overload)
-Provides: php(pcre)
Provides: php(reflection)
-Provides: php(session)
-Provides: php(spl)
Provides: php(standard)
Provides: php(zend_extension_api) = %{zend_extension_api}
Provides: php(zend_module_api) = %{zend_module_api}
Provides: php5(debug) = %{php_debug}
Provides: php5(thread-safety) = %{zend_zts}
-Obsoletes: php-pcre < 4:5.2.0
Obsoletes: php-pecl-domxml
-Obsoletes: php-session < 3:4.2.1-2
Conflicts: php4-common < 3:4.4.4-8
Conflicts: rpm < 4.4.2-0.2
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: autoconf
Requires: automake
+%if "%{pld_release}" != "ac"
+Requires: libtool >= 2:2.2
+%else
Requires: libtool
-Requires: pcre-devel >= 6.6
+%endif
+%{?with_pcre:Requires: pcre-devel >= 6.6}
Requires: shtool
Obsoletes: php-pear-devel
Obsoletes: php4-devel
Group: Libraries
URL: http://www.php.net/manual/en/book.mysqli.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-spl = %{epoch}:%{version}-%{release}
Provides: php(mysqli)
%description mysqli
Moduł PHP umożliwiający tworzenie nowych procesów i kontrolę nad nimi.
Obsługuje funkcje takie jak fork(), waitpid(), signal() i podobne.
+%package pcre
+Summary: PCRE extension module for PHP
+Summary(pl.UTF-8): Moduł PCRE dla PHP
+Group: Libraries
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Provides: php(pcre)
+
+%description pcre
+This is a dynamic shared object (DSO) for PHP that will add Perl
+Compatible Regular Expression support.
+
+%description pcre -l pl.UTF-8
+Moduł PHP umożliwiający korzystanie z perlowych wyrażeń regularnych
+(Perl Compatible Regular Expressions)
+
%package pdo
Summary: PHP Data Objects (PDO)
Summary(pl.UTF-8): Obsługa PHP Data Objects (PDO)
Group: Libraries
URL: http://www.php.net/manual/en/book.pdo.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-spl = %{epoch}:%{version}-%{release}
Provides: php(pdo)
Obsoletes: php-pecl-PDO
Group: Libraries
URL: http://www.php.net/manual/en/book.phar.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-spl = %{epoch}:%{version}-%{release}
Provides: php(phar)
%description phar
Moduł PHP dodający możliwość konwersji kodowania plików (poprzez
bibliotekę recode).
+%package session
+Summary: session extension module for PHP
+Summary(pl.UTF-8): Moduł session dla PHP
+Group: Libraries
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Suggests: %{name}-hash = %{epoch}:%{version}-%{release}
+Provides: php(session)
+
+%description session
+This is a dynamic shared object (DSO) for PHP that will add session
+support.
+
+%description session -l pl.UTF-8
+Moduł PHP dodający obsługę sesji.
+
%package shmop
Summary: Shared Memory Operations extension module for PHP
Summary(pl.UTF-8): Moduł shmop dla PHP
%description sockets -l pl.UTF-8
Moduł PHP dodający obsługę gniazdek.
+%package spl
+Summary: Standard PHP Library module for PHP
+Summary(pl.UTF-8): Moduł SPL dla PHP
+Group: Libraries
+URL: http://php.net/manual/en/book.spl.php
+Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-pcre = %{epoch}:%{version}-%{release}
+Requires: %{name}-simplexml = %{epoch}:%{version}-%{release}
+Provides: php(spl)
+
+%description spl
+This is a dynamic shared object (DSO) for PHP that will add Standard
+PHP Library support.
+
+%description spl -l pl.UTF-8
+Moduł PHP dodający obsługę gniazdek.
+
%package sqlite
Summary: SQLite extension module for PHP
Summary(pl.UTF-8): Moduł SQLite dla PHP
Group: Libraries
URL: http://www.php.net/manual/en/book.sqlite.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-# sqlite ext extends spl and pdo
-Requires: %{name}-pdo = %{epoch}:%{version}-%{release}
+Suggests: %{name}-pdo = %{epoch}:%{version}-%{release}
+Suggests: %{name}-spl = %{epoch}:%{version}-%{release}
Provides: php(sqlite)
%description sqlite
Group: Libraries
URL: http://www.php.net/manual/en/book.wddx.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-#Requires: %{name}-session = %{epoch}:%{version}-%{release}
+Requires: %{name}-session = %{epoch}:%{version}-%{release}
Requires: %{name}-xml = %{epoch}:%{version}-%{release}
Provides: php(wddx)
Group: Libraries
URL: http://www.php.net/manual/en/book.xmlreader.php
Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Requires: %{name}-dom = %{epoch}:%{version}-%{release}
+Suggests: %{name}-dom = %{epoch}:%{version}-%{release}
Provides: php(xmlreader)
%description xmlreader
%prep
%setup -q
-
-# for suhosin patch
+# prep for suhosin patch
%{__sed} -i -e 's,\r$,,' Zend/Zend.dsp Zend/ZendTS.dsp
-
-%if %{with type_hints}
-%patch50 -p0
-%endif
-
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
-%patch7 -p1
%patch8 -p1
+%patch7 -p1
%patch9 -p1
-
cp php.ini-production php.ini
%patch10 -p1
-
-%patch11 -p1
+%if %{with type_hints}
+%patch12 -p0
+%endif
%patch14 -p1
%patch15 -p1
%patch17 -p1
%endif
%patch20 -p1
%patch21 -p1
-
+%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
-
+%patch27 -p1
%patch29 -p1
-%patch30 -p1
-%patch31 -p1
-%patch32 -p1
-%patch38 -p1
+%patch35 -p1
%patch39 -p1
%if %{with fpm}
%patch40 -p1
-#%patch41 -p1
-#%patch42 -p1
-%patch44 -p1
+%patch41 -p1
+%patch42 -p1
%endif
-
%patch43 -p1
-
%if %{with suhosin}
%patch47 -p1
%endif
+%patch49 -p1
+%patch50 -p1
+%patch51 -p1
+%patch52 -p1
+
+%patch11 -p4
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
%if %{with apache2}
apxs2
%endif
+%if %{with litespeed}
+litespeed
+%endif
"
for sapi in $sapis; do
: SAPI $sapi
ver=$(rpm -q --qf '%{V}' apache-devel)
sapi_args="--disable-cli --with-apxs2=%{apxs2} --with-apache-version=$ver"
;;
+ litespeed)
+ sapi_args='--with-litespeed'
+ ;;
esac
%configure \
--without-libexpat-dir \
--enable-mysqlnd-threading \
--enable-posix=shared \
- --enable-session \
--enable-shared \
+ --enable-session=shared \
--enable-shmop=shared \
--enable-simplexml=shared \
+ --enable-spl=shared \
--enable-sysvmsg=shared \
--enable-sysvsem=shared \
--enable-sysvshm=shared \
%{?with_oci8:--with-oci8=shared} \
%{?with_openssl:--with-openssl=shared} \
--with-kerberos \
- --with-pcre-regex=/usr \
+ %{!?with_pcre:--without-pcre-regex}%{?with_pcre:--with-pcre-regex=/usr} \
%{!?with_filter:--disable-filter}%{?with_filter:--enable-filter=shared} \
--with-pear=%{php_pear_dir} \
%{!?with_pgsql:--without-pgsql}%{?with_pgsql:--with-pgsql=shared,/usr} \
--with-zlib-dir=shared,/usr \
--enable-zip=shared,/usr \
- # safe for debug
+ # save for debug
cp -f Makefile Makefile.$sapi
cp -f main/php_config.h php_config.h.$sapi
cp -f config.log config.log.$sapi
%{__make} libtool-sapi LIBTOOL_SAPI=sapi/apache2handler/libphp5.la -f Makefile.apxs2
%endif
+%if %{with litespeed}
+%{__make} -f Makefile.litespeed
+%endif
+
# CGI/FCGI
cp -af php_config.h.cgi-fcgi main/php_config.h
%{__make} -f Makefile.cgi-fcgi
libtool --silent --mode=install install sapi/apache2handler/libphp5.la $RPM_BUILD_ROOT%{_libdir}/apache
%endif
+# install litespeed sapi
+%if %{with litespeed}
+libtool --silent --mode=install install sapi/litespeed/php $RPM_BUILD_ROOT%{_bindir}/php.litespeed
+%endif
+
libtool --silent --mode=install install libphp_common.la $RPM_BUILD_ROOT%{_libdir}
# fix install paths, avoid evil rpaths
sed -i -e "s|^libdir=.*|libdir='%{_libdir}'|" $RPM_BUILD_ROOT%{_libdir}/libphp_common.la
conf="%{_sysconfdir}/conf.d/$mod.ini"
# xml needs to be loaded before wddx
[ "$mod" = "wddx" ] && conf="%{_sysconfdir}/conf.d/xml_$mod.ini"
+ # pre needs to be loaded before SPL
+ [ "$mod" = "pcre" ] && conf="%{_sysconfdir}/conf.d/PCRE.ini"
+ # spl needs to be loaded before mysqli
+ [ "$mod" = "spl" ] && conf="%{_sysconfdir}/conf.d/SPL.ini"
echo "+ $conf"
cat > $RPM_BUILD_ROOT$conf <<-EOF
; Enable $mod extension module
%extension_scripts oci8
%extension_scripts odbc
%extension_scripts openssl
+%extension_scripts pcre
%extension_scripts pdo-dblib
%extension_scripts pdo-firebird
%extension_scripts pdo-mysql
%extension_scripts posix
%extension_scripts pspell
%extension_scripts recode
+%extension_scripts session
%extension_scripts shmop
%extension_scripts snmp
%extension_scripts soap
%extension_scripts sockets
+%extension_scripts spl
%extension_scripts sqlite
%extension_scripts sqlite3
%extension_scripts sybase-ct
%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*pcntl\.so/d' %{_sysconfdir}/php-cli.ini
fi
+%triggerun pcre -- %{name}-pcre < 4:5.0.4-9.1
+%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*pcre\.so/d' %{_sysconfdir}/php.ini
+
%triggerun pgsql -- %{name}-pgsql < 4:5.0.4-9.1
%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*pgsql\.so/d' %{_sysconfdir}/php.ini
%triggerun recode -- %{name}-recode < 4:5.0.4-9.1
%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*recode\.so/d' %{_sysconfdir}/php.ini
+%triggerun session -- %{name}-session < 4:5.0.4-9.1
+%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*session\.so/d' %{_sysconfdir}/php.ini
+
%triggerun shmop -- %{name}-shmop < 4:5.0.4-9.1
%{__sed} -i -e '/^extension[[:space:]]*=[[:space:]]*shmop\.so/d' %{_sysconfdir}/php.ini
%attr(755,root,root) %{_libdir}/apache/libphp5.so
%endif
+%if %{with litespeed}
+%files litespeed
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/php.litespeed
+%endif
+
%files cgi
%defattr(644,root,root,755)
%dir %{_sysconfdir}/cgi-fcgi.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/cli.d/pcntl.ini
%attr(755,root,root) %{php_extensiondir}/pcntl.so
+%if %{with pcre}
+%files pcre
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/PCRE.ini
+%attr(755,root,root) %{php_extensiondir}/pcre.so
+%endif
+
%files pdo
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/pdo.ini
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/simplexml.ini
%attr(755,root,root) %{php_extensiondir}/simplexml.so
+%files session
+%defattr(644,root,root,755)
+%doc ext/session/mod_files.sh
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/session.ini
+%attr(755,root,root) %{php_extensiondir}/session.so
+
%files shmop
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/shmop.ini
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/sockets.ini
%attr(755,root,root) %{php_extensiondir}/sockets.so
+%files spl
+%defattr(644,root,root,755)
+%doc ext/spl/{CREDITS,README,TODO}
+%doc ext/spl/examples
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/SPL.ini
+%attr(755,root,root) %{php_extensiondir}/spl.so
+
%if %{with sqlite}
%files sqlite
%defattr(644,root,root,755)