#
+# TODO:
+# - pear - isn't built now, what is still needed???
+# - fastcgi option in cgi SAPI? or separate fcgi SAPI?
+#
# Automatic pear requirements finding:
%include /usr/lib/rpm/macros.php
Source5: %{name}-mod_%{name}.conf
Source6: %{name}-cgi.ini
Source7: %{name}-apache.ini
+Source8: %{name}-cli.ini
Patch0: %{name}-shared.patch
Patch1: %{name}-pldlogo.patch
+Patch2: %{name}-xml-expat-fix.patch
#Patch2: %{name}-mysql-socket.patch
Patch3: %{name}-mail.patch
-#Patch4: %{name}-link-libs.patch
+Patch4: %{name}-link-libs.patch
#Patch5: %{name}-fastcgi.patch
Patch6: %{name}-libpq_fs_h_path.patch
Patch7: %{name}-wddx-fix.patch
Patch8: %{name}-cpdf-fix.patch
#Patch9: %{name}-session-fix-shared.patch
Patch10: %{name}-hyperwave-fix.patch
+Patch11: %{name}-odbc-fix.patch
#Patch11: %{name}-openssl-for-ext-only.patch
-Patch12: %{name}-java-fix.patch
+Patch12: %{name}-java-norpath.patch
Patch13: %{name}-mcal-shared-lib.patch
Patch14: %{name}-msession-shared-lib.patch
Patch15: %{name}-build_modules.patch
-#Patch16: %{name}-sapi-ini-file.patch
+Patch16: %{name}-sapi-ini-file.patch
+Patch17: %{name}-dl-zlib.patch
+Patch18: %{name}-dl-pcre.patch
+Patch19: %{name}-session-unregister.patch
#Patch17: %{name}-%{name}_iconv_string_declaration.patch
#Patch18: %{name}-pear-cosmetic.patch
#Patch19: %{name}-mnogosearch.patch
Patch20: %{name}-ini.patch
Patch21: %{name}-acam.patch
Patch22: %{name}-xmlrpc-fix.patch
+Patch23: %{name}-libtool.patch
#Patch23: %{name}-iconv-bug18039.patch
Patch24: %{name}-db4.patch
Icon: php4.gif
BuildRequires: zip
BuildRequires: zlib-devel >= 1.0.9
BuildRequires: zziplib-devel
-#BuildRequires: fastcgi-devkit
+#BuildRequires: fcgi-devel
# apache 1.3 vs apache 2.0
%if %{_apache2}
PreReq: apache >= 2.0.40
%define _sysconfdir /etc/php
%define extensionsdir %{_libdir}/php
+%define httpdir /home/services/httpd
%description
PHP is an HTML-embedded scripting language. PHP attempts to make it
%package cgi
Summary: PHP as CGI program
Summary(pl): PHP jako program CGI
-Group: Libraries
+Group: Development/Languages/PHP
PreReq: %{name}-common = %{version}
+Provides: php-program = %{version}
%description cgi
PHP as CGI program.
%description cgi -l pl
PHP jako program CGI.
+%package cli
+Summary: PHP as CLI interpreter
+Summary(pl): PHP jako interpreter dzia³aj±cy z linii poleceñ
+Group: Development/Languages/PHP
+PreReq: %{name}-common = %{version}
+Provides: php-program = %{version}
+
+%description cli
+PHP as CLI interpreter.
+
+%description cli -l pl
+PHP jako interpreter dzia³aj±cy z linii poleceñ.
+
%package common
Summary: Common files nneded by both apache module and CGI
Summary(pl): Wspólne pliki dla modu³u apache'a i programu CGI
support to PHP. This extension provides a simple and effective means
for creating and invoking methods on Java objects from PHP.
+Note: it requires setting LD_LIBRARY_PATH to JRE directories
+containing JVM libraries (e.g. libjava.so, libverify.so and libjvm.so
+for Sun's JRE) before starting Apache or PHP interpreter.
+
%description java -l pl
Modu³ PHP dodaj±cy wsparcie dla Javy. Umo¿liwia odwo³ywanie siê do
obiektów Javy z poziomu PHP.
+Uwaga: modu³ wymaga ustawienia LD_LIBRARY_PATH na katalogi JRE
+zawieraj±ce biblioteki JVM (np. libjava.so, libverify.so i libjvm.so
+dla JRE Suna) przed uruchomieniem Apache'a lub interpretera PHP.
+
%package ldap
Summary: LDAP extension module for PHP
Summary(pl): Modu³ LDAP dla PHP
Summary: Process Control extension module for PHP
Summary(pl): Modu³ Process Control dla PHP
Group: Libraries
-Requires(post,preun):%{name}-cgi = %{version}
-Requires: %{name}-cgi = %{version}
+Requires(post,preun):%{name}-program = %{version}
+Requires: %{name}-program = %{version}
%description pcntl
This is a dynamic shared object (DSO) for Apache that will add process
Group: Libraries
Requires(post,preun):%{name}-common = %{version}
Requires: %{name}-common = %{version}
+Requires: yaz >= 1.9
%description yaz
This is a dynamic shared object (DSO) for Apache that will add yaz
%prep
%setup -q
-#%patch0 -p1 -- needs update!
+%patch0 -p1
%patch1 -p1
#%patch2 -p1 -- obsolete
+%patch2 -p1
%patch3 -p1
-#%patch4 -p1 -- seems obsolete
-#%patch5 -p1 -- obsolete (fastcgi SAPI removed)
+%patch4 -p1
+#%patch5 -p1 -- obsolete (fastcgi interface changed)
%patch6 -p1
-#%patch7 -p1 -- partially obsolete, the rest to check (too many changes)
+%patch7 -p1
%patch8 -p1
#%patch9 -p1 -- obsolete
%patch10 -p1
+%patch11 -p1
#%patch11 -p1 -- obsolete (openssl used also in common part)
-#%patch12 -p1 -- needs update? to check
+%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
-#%patch16 -p1 -- uhm... php allows _separate_ (not included) php-${SAPI}.ini files now
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
#%patch17 -p1 -- obsolete
#%patch18 -p1 -- obsolete? - no such file
#%patch19 -p1 -- obsolete
# conditionally...
%patch21 -p1
%patch22 -p1
+%patch23 -p1
#%patch23 -p1 -- obsolete
%patch24 -p1
%{__libtoolize}
%{__aclocal}
autoconf
-#for i in cgi fastcgi apxs ; do
PROG_SENDMAIL="/usr/lib/sendmail"; export PROG_SENDMAIL
-for i in cgi apxs ; do
+for i in cgi cli apxs ; do
%configure \
`[ $i = cgi ] && echo --enable-discard-path` \
- `[ $i = fastcgi ] && echo --enable-discard-path --with-fastcgi=/usr` \
+ `[ $i != cli ] && echo --disable-cli` \
+ `[ $i = cli ] && echo --disable-cgi` \
+ `[ $i = fcgi ] && echo --enable-fastcgi --with-fastcgi=/usr` \
%if %{_apache2}
`[ $i = apxs ] && echo --with-apxs2=%{apxs}` \
%else
--%{!?debug:dis}%{?debug:en}able-debug \
--enable-bcmath=shared \
--enable-calendar=shared \
- --disable-cli \
--enable-ctype=shared \
--enable-dba=shared \
--enable-dbx=shared \
--with-filepro=shared \
--with-freetype-dir=shared \
--with-gettext=shared \
- --with-gd=shared \
+ --with-gd=shared,/usr \
--with-gdbm \
--with-gmp=shared \
--with-hyperwave=shared \
--with-zip=shared \
--with-zlib=shared \
--with-zlib-dir=shared,/usr
-done
-# --with-sablot-js=shared,no
+cp -f Makefile Makefile.$i
+done
# for now session_mm doesn't work with shared session module...
# --enable-session=shared
# --with-qtdom=shared
%{__make}
-%{__make} CFLAGS="%{rpmcflags} -DDISCARD_PATH=1" -C sapi/cgi
-# Kill -rpath from php binary and libphp4.so
-perl -pi -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
-perl -pi -e 's|^runpath_var=.*|runpath_var=|g' libtool
-%{__make} CFLAGS="%{rpmcflags} -DDISCARD_PATH=1" php
+# fix install paths, avoid evil rpaths
+perl -pi -e "s|^libdir=.*|libdir='%{_libdir}'|" libphp_common.la
+perl -pi -e "s|^libdir=.*|libdir='%{_libdir}/apache'|" libphp4.la
+perl -pi -e "s|^(relink_command=.* -rpath )[^ ]*/libs |\1%{_libdir}/apache |" libphp4.la
-perl -pi -e 's|^hardcode_into_libs=.*|hardcode_into_libs=no|g' libtool
-rm libphp4.la ; %{__make} libphp4.la
+# notes:
+# -DENABLE_CHROOT_FUNC=1 (cgi,fcgi) is used in ext/standard/dir.c (libphp_common)
+# -DPHP_WRITE_STDOUT is used also for cli, but not set by its config.m4
+
+%{__make} sapi/cgi/php -f Makefile.cgi \
+ CFLAGS_CLEAN="%{rpmcflags} -DDISCARD_PATH=1 -DENABLE_PATHINFO_CHECK=1 -DFORCE_CGI_REDIRECT=0 -DPHP_WRITE_STDOUT=1"
+
+%{__make} sapi/cli/php -f Makefile.cli
+
+# for fcgi: -DDISCARD_PATH=0 -DENABLE_PATHINFO_CHECK=1 -DFORCE_CGI_REDIRECT=0
+# -DHAVE_FILENO_PROTO=1 -DHAVE_FPOS=1 -DHAVE_LIBNSL=1(die) -DHAVE_SYS_PARAM_H=1
+# -DPHP_FASTCGI=1 -DPHP_FCGI_STATIC=1 -DPHP_WRITE_STDOUT=1
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_libdir}/{php,apache},%{_sysconfdir}/{apache,cgi}} \
- $RPM_BUILD_ROOT/home/services/httpd/icons \
+ $RPM_BUILD_ROOT%{httpdir}/icons \
$RPM_BUILD_ROOT{%{_sbindir},%{_bindir}} \
$RPM_BUILD_ROOT/var/run/php \
$RPM_BUILD_ROOT/etc/httpd/httpd.conf
-%{__make} install \
+%{__make} install install-build install-programs install-headers \
INSTALL_ROOT=$RPM_BUILD_ROOT \
- INSTALL_IT="install libs/libphp4.so $RPM_BUILD_ROOT%{_libdir}/apache/ ; install libs/libphp_common*.so.*.*.* $RPM_BUILD_ROOT%{_libdir}"
+ INSTALL_IT="\$(LIBTOOL) --mode=install install libphp_common.la $RPM_BUILD_ROOT%{_libdir} ; \$(LIBTOOL) --mode=install install libphp4.la $RPM_BUILD_ROOT%{_libdir}/apache ; \$(LIBTOOL) --mode=install install sapi/cgi/php $RPM_BUILD_ROOT%{_bindir}/php.cgi ; \$(LIBTOOL) --mode=install install sapi/cli/php $RPM_BUILD_ROOT%{_bindir}/php.cli"
-%{?_with_java:install ext/java/php_java.jar $RPM_BUILD_ROOT%{_libdir}}
+# compatibility (/usr/bin/php used to be CGI SAPI)
+ln -sf php.cgi $RPM_BUILD_ROOT%{_bindir}/php
-install .libs/php $RPM_BUILD_ROOT%{_bindir}/php
+%{?_with_java:install ext/java/php_java.jar $RPM_BUILD_ROOT%{extensionsdir}}
install php.ini $RPM_BUILD_ROOT%{_sysconfdir}/php.ini
-install %{SOURCE6} %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}
-install %{SOURCE2} php.gif $RPM_BUILD_ROOT/home/services/httpd/icons
+install %{SOURCE6} %{SOURCE7} %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}
+install %{SOURCE2} php.gif $RPM_BUILD_ROOT%{httpdir}/icons
install %{SOURCE4} $RPM_BUILD_ROOT%{_sbindir}
install %{SOURCE5} $RPM_BUILD_ROOT/etc/httpd/httpd.conf/70_mod_php.conf
mv -f Zend/LICENSE{,.Zend}
-mkdir $RPM_BUILD_ROOT%{php_pear_dir}/{Auth,Science,HTML/Template}
+install -d $RPM_BUILD_ROOT%{php_pear_dir}/{Auth,Science,HTML/Template}
%clean
rm -rf $RPM_BUILD_ROOT
fi
%post pcntl
+if [ -f %{_sysconfdir}/php-cgi.ini ]; then
%{_sbindir}/php-module-install install pcntl %{_sysconfdir}/php-cgi.ini
+fi
+if [ -f %{_sysconfdir}/php-cli.ini ]; then
+%{_sbindir}/php-module-install install pcntl %{_sysconfdir}/php-cli.ini
+fi
%preun pcntl
if [ "$1" = "0" ]; then
+ if [ -f %{_sysconfdir}/php-cgi.ini ]; then
%{_sbindir}/php-module-install remove pcntl %{_sysconfdir}/php-cgi.ini
+ fi
+ if [ -f %{_sysconfdir}/php-cli.ini ]; then
+ %{_sbindir}/php-module-install remove pcntl %{_sysconfdir}/php-cli.ini
+ fi
fi
%post pcre
%files cgi
%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/php.cgi
%attr(755,root,root) %{_bindir}/php
%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/php-cgi.ini
+%files cli
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/php.cli
+%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/php-cli.ini
+
%files common
%defattr(644,root,root,755)
%doc php.ini-*
%attr(644,root,root) %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/php.ini
%attr(730,root,http) %dir %verify(not group mode) /var/run/php
-/home/services/httpd/icons/*
+%{httpdir}/icons/*
%attr(755,root,root) %{_sbindir}/*
-%attr(755,root,root) %{_libdir}/libphp_common*.so.*.*.*
+%attr(755,root,root) %{_libdir}/libphp_common-*.so
%dir %{extensionsdir}
%files devel
%defattr(644,root,root,755)
-%{_includedir}/php
-%{_libdir}/php/build
%attr(755,root,root) %{_bindir}/phpextdist
%attr(755,root,root) %{_bindir}/phpize
%attr(755,root,root) %{_bindir}/php-config
+%attr(755,root,root) %{_libdir}/libphp_common.so
+%{_libdir}/libphp_common.la
+%{_includedir}/php
+%{_libdir}/php/build
%files doc
%defattr(644,root,root,755)
%files java
%defattr(644,root,root,755)
%attr(755,root,root) %{extensionsdir}/java.so
-%{_libdir}/php_java.jar
+%{extensionsdir}/php_java.jar
%endif
%if %{?_without_ldap:0}%{!?_without_ldap:1}
%defattr(644,root,root,755)
%attr(755,root,root) %{extensionsdir}/zlib.so
+# not built yet
+%if 0
%files pear
%defattr(644,root,root,755)
%dir %{php_pear_dir}
#%attr(755,root,root) %{_bindir}/pear
%attr(755,root,root) %{_bindir}/pearize
%attr(755,root,root) %{_bindir}/phptar
+%endif