diff options
author | Luca Longinotti <chtekk@gentoo.org> | 2006-03-12 13:24:36 +0000 |
---|---|---|
committer | Luca Longinotti <chtekk@gentoo.org> | 2006-03-12 13:24:36 +0000 |
commit | 293d56d84332dc67b3854c54072386ef2fed722a (patch) | |
tree | e95230053a4bb170cc3e8bec4a2af78a819eb2be /eclass/php5_1-sapi.eclass | |
parent | Remove obsolete version. Add die messages. (diff) | |
download | gentoo-2-293d56d84332dc67b3854c54072386ef2fed722a.tar.gz gentoo-2-293d56d84332dc67b3854c54072386ef2fed722a.tar.bz2 gentoo-2-293d56d84332dc67b3854c54072386ef2fed722a.zip |
Sync with PHP Overlay: various updates.
Diffstat (limited to 'eclass/php5_1-sapi.eclass')
-rw-r--r-- | eclass/php5_1-sapi.eclass | 234 |
1 files changed, 123 insertions, 111 deletions
diff --git a/eclass/php5_1-sapi.eclass b/eclass/php5_1-sapi.eclass index ae0c958c1e4b..87836285e730 100644 --- a/eclass/php5_1-sapi.eclass +++ b/eclass/php5_1-sapi.eclass @@ -1,6 +1,6 @@ -# Copyright 1999-2005 Gentoo Foundation +# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/php5_1-sapi.eclass,v 1.16 2006/01/28 15:49:28 chtekk Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/php5_1-sapi.eclass,v 1.17 2006/03/12 13:24:36 chtekk Exp $ # # ######################################################################## # @@ -32,26 +32,20 @@ inherit flag-o-matic eutils confutils libtool php-common-r1 # copies of php which are compiled into other packages (e.g. php support # for the thttpd web server) don't need these variables -if [ "${PHP_PACKAGE}" = 1 ]; then +if [[ "${PHP_PACKAGE}" == 1 ]] ; then HOMEPAGE="http://www.php.net/" LICENSE="PHP-3" SRC_URI="http://www.php.net/distributions/${MY_PHP_P}.tar.bz2" S="${WORKDIR}/${MY_PHP_P}" fi -IUSE="${IUSE} adabas bcmath berkdb birdstep bzip2 calendar cdb cjk crypt ctype curl curlwrappers db2 dba dbase dbmaker debug doc empress empress-bcs esoob exif fastbuild frontbase fdftk filepro firebird flatfile ftp gd gd-external gdbm gmp hardenedphp hyperwave-api iconv imap informix inifile interbase iodbc ipv6 java-external kerberos ldap libedit mcve memlimit mhash ming msql mssql mysql mysqli ncurses nls oci8 oci8-instant-client odbc pcntl pcre pdo pdo-external pic posix postgres qdbm readline recode sapdb sasl session sharedext sharedmem simplexml snmp soap sockets solid spell spl sqlite ssl sybase sybase-ct sysvipc threads tidy tokenizer truetype vm-goto vm-switch wddx xml xmlreader xmlrpc xpm xsl yaz zip zlib" +IUSE="${IUSE} adabas bcmath berkdb birdstep bzip2 calendar cdb cjk crypt ctype curl curlwrappers db2 dba dbase dbmaker debug doc empress empress-bcs esoob exif fastbuild frontbase fdftk filepro firebird flatfile ftp gd gd-external gdbm gmp hardenedphp hash hyperwave-api iconv imap informix inifile interbase iodbc ipv6 java-external kerberos ldap libedit mcve memlimit mhash ming msql mssql mysql mysqli ncurses nls oci8 oci8-instant-client odbc pcntl pcre pdo pdo-external pic posix postgres qdbm readline reflection recode sapdb sasl session sharedext sharedmem simplexml snmp soap sockets solid spell spl sqlite ssl sybase sybase-ct sysvipc threads tidy tokenizer truetype vm-goto vm-switch wddx xml xmlreader xmlwriter xmlrpc xpm xsl yaz zip zlib" # these USE flags should have the correct dependencies DEPEND="${DEPEND} !dev-php/php !dev-php/php-cgi !dev-php/mod_php - >=sys-devel/m4-1.4.3 - >=sys-devel/libtool-1.5.18 - >=sys-devel/automake-1.9.6 - sys-devel/automake-wrapper - >=sys-devel/autoconf-2.59 - sys-devel/autoconf-wrapper berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( dev-db/cdb ) @@ -94,6 +88,7 @@ DEPEND="${DEPEND} wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) + xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( || ( x11-libs/libXpm virtual/x11 ) ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) @@ -107,6 +102,15 @@ DEPEND="${DEPEND} !media-libs/libswf" # simplistic for now RDEPEND="${RDEPEND} ${DEPEND}" +# those are only needed at compile-time +DEPEND="${DEPEND} + >=sys-devel/m4-1.4.3 + >=sys-devel/libtool-1.5.18 + >=sys-devel/automake-1.9.6 + sys-devel/automake-wrapper + >=sys-devel/autoconf-2.59 + sys-devel/autoconf-wrapper" + # Additional features # # They are in PDEPEND because we need PHP installed first! @@ -125,12 +129,6 @@ PDEPEND="${PDEPEND} PHP_INI_FILE="php.ini" # ======================================================================== -# Hardened-PHP Support -# ======================================================================== - -[ -n "${HARDENEDPHP_PATCH}" ] && SRC_URI="${SRC_URI} hardenedphp? ( http://gentoo.longitekk.com/${HARDENEDPHP_PATCH} )" - -# ======================================================================== EXPORT_FUNCTIONS pkg_setup src_compile src_install src_unpack pkg_postinst @@ -175,8 +173,10 @@ php5_1-sapi_check_awkward_uses() { confutils_use_depend_all "soap" "xml" confutils_use_depend_all "simplexml" "xml" confutils_use_depend_all "xsl" "xml" + confutils_use_depend_all "xmlrpc" "xml" confutils_use_depend_all "wddx" "xml" confutils_use_depend_all "xmlreader" "xml" + confutils_use_depend_all "xmlwriter" "xml" # IMAP support php_check_imap @@ -220,7 +220,7 @@ php5_1-sapi_check_awkward_uses() { confutils_use_conflict "readline" "libedit" # Recode is not liked - confutils_use_conflict "recode" "mysql" "imap" "nis" + confutils_use_conflict "recode" "mysql" "imap" "yaz" # the MM extension isn't thread-safe confutils_use_conflict "sharedmem" "threads" @@ -231,6 +231,41 @@ php5_1-sapi_check_awkward_uses() { confutils_warn_about_missing_deps } +php5_1-sapi_set_php_ini_dir() { + PHP_INI_DIR="/etc/php/${PHPSAPI}-php5" + PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" + PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" +} + +php5_1-sapi_install_ini() { + destdir=/usr/$(get_libdir)/php5 + + # get the extension dir + PHPEXTDIR="`"${D}/${destdir}/bin/php-config" --extension-dir`" + + # work out where we are installing the ini file + php5_1-sapi_set_php_ini_dir + + local phpinisrc=php.ini-dist + + dodir ${PHP_INI_DIR} + insinto ${PHP_INI_DIR} + newins ${phpinisrc} ${PHP_INI_FILE} + + dodir ${PHP_EXT_INI_DIR} + dodir ${PHP_EXT_INI_DIR_ACTIVE} + + # Install any extensions built as shared objects + if useq sharedext ; then + for x in `ls "${D}/${PHPEXTDIR}/"*.so | sort` ; do + inifilename=${x/.so/.ini} + inifilename=`basename ${inifilename}` + echo "extension=`basename ${x}`" >> "${D}/${PHP_EXT_INI_DIR}/${inifilename}" + dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}" + done + fi +} + # ======================================================================== # EXPORTED FUNCTIONS # ======================================================================== @@ -238,107 +273,109 @@ php5_1-sapi_check_awkward_uses() { php5_1-sapi_pkg_setup() { # let's do all the USE flag testing before we do anything else # this way saves a lot of time - php5_1-sapi_check_awkward_uses } php5_1-sapi_src_unpack() { - if [ "${PHP_PACKAGE}" == 1 ] ; then + if [[ "${PHP_PACKAGE}" == 1 ]] ; then unpack ${A} fi cd "${S}" - # lib64 support - if [ -n "${LIB64_PATCH}" ] ; then - epatch "${WORKDIR}/${LIB64_PATCH}" + # Change PHP branding + PHPPR=${PR/r/} + if [[ "${PHPPR}" != "0" ]] ; then + sed -e "s|^EXTRA_VERSION=\"\"|EXTRA_VERSION=\"-pl${PHPPR}-gentoo\"|g" -i configure.in || die "Unable to change PHP branding to -pl${PHPPR}-gentoo" else - ewarn "There is no lib64 patch available for this PHP release yet!" + sed -e "s|^EXTRA_VERSION=\"\"|EXTRA_VERSION=\"-gentoo\"|g" -i configure.in || die "Unable to change PHP branding to -gentoo" fi - # Patch PHP to show Gentoo as the server platform - sed -e "s/PHP_UNAME=\`uname -a | xargs\`/PHP_UNAME=\`uname -s -n -r -v | xargs\`/g" -i configure.in || die "Failed to fix server platform name" - - # Patch PHP to support heimdal instead of mit-krb5 - if has_version "app-crypt/heimdal" ; then - sed -e "s|gssapi_krb5|gssapi|g" -i acinclude.m4 || die "Failed to fix heimdal libname" - sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 || die "Failed to fix heimdal crypt lib" + # multilib-strict support + if [[ -n "${MULTILIB_PATCH}" ]] && [[ -f "${WORKDIR}/${MULTILIB_PATCH}" ]] ; then + epatch "${WORKDIR}/${MULTILIB_PATCH}" + else + ewarn "There is no multilib-strict patch available for this PHP release yet!" + fi + + # Apply general PHP5 patches + if [[ -d "${WORKDIR}/${MY_PHP_PV}/php5" ]] ; then + EPATCH_SOURCE="${WORKDIR}/${MY_PHP_PV}/php5" EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch fi - # Patch for PostgreSQL support - if use postgres ; then - sed -e 's|include/postgresql|include/postgresql include/postgresql/pgsql|g' -i ext/pgsql/config.m4 || die "Failed to fix PostgreSQL include paths" + # Apply version-specific PHP patches + if [[ -d "${WORKDIR}/${MY_PHP_PV}/${MY_PHP_PV}" ]] ; then + EPATCH_SOURCE="${WORKDIR}/${MY_PHP_PV}/${MY_PHP_PV}" EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch fi + # Patch PHP to show Gentoo as the server platform + sed -e "s/PHP_UNAME=\`uname -a | xargs\`/PHP_UNAME=\`uname -s -n -r -v | xargs\`/g" -i configure.in || die "Failed to fix server platform name" + # Disable interactive make test sed -e 's/'`echo "\!getenv('NO_INTERACTION')"`'/false/g' -i run-tests.php - # Patch for session persistence bug - epatch "${FILESDIR}/5.1-any/php5-soap_persistence_session.diff" - - # stop php from activating the apache config, as we will do that ourselves + # Stop php from activating the Apache config, as we will do that ourselves for i in configure sapi/apache/config.m4 sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 ; do sed -i.orig -e 's,-i -a -n php5,-i -n php5,g' ${i} sed -i.orig -e 's,-i -A -n php5,-i -n php5,g' ${i} done - # imap support - use imap && epatch "${FILESDIR}/5.1-any/php5-imap-symlink.diff" + # Patch PHP to support heimdal instead of mit-krb5 + if has_version "app-crypt/heimdal" ; then + sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 || die "Failed to fix heimdal libname" + sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 || die "Failed to fix heimdal crypt library reference" + fi - # iodbc support - use iodbc && epatch "${FILESDIR}/5.1-any/php5-iodbc-config.diff" - use iodbc && epatch "${FILESDIR}/5.1-any/php5-with-iodbc.diff" + # Patch for PostgreSQL support + if useq postgres ; then + sed -e 's|include/postgresql|include/postgresql include/postgresql/pgsql|g' -i ext/pgsql/config.m4 || die "Failed to fix PostgreSQL include paths" + fi - # hardenedphp support - if use hardenedphp ; then - if [ -n "${HARDENEDPHP_PATCH}" ] ; then + # Hardened-PHP support + if useq hardenedphp ; then + if [[ -n "${HARDENEDPHP_PATCH}" ]] && [[ -f "${DISTDIR}/${HARDENEDPHP_PATCH}" ]] ; then epatch "${DISTDIR}/${HARDENEDPHP_PATCH}" else - ewarn "There is no Hardened-PHP available for this PHP release yet!" + ewarn "There is no Hardened-PHP patch available for this PHP release yet!" fi fi # fastbuild support - use fastbuild && epatch "${FILESDIR}/5.1-any/php5-fastbuild.patch" - - # fix problems compiling with apache2 - if useq apache2 && ! useq threads ; then - epatch "${FILESDIR}/5.1-any/php5-prefork.patch" + if useq fastbuild ; then + if [[ -n "${FASTBUILD_PATCH}" ]] && [[ -f "${WORKDIR}/${FASTBUILD_PATCH}" ]] ; then + epatch "${WORKDIR}/${FASTBUILD_PATCH}" + else + ewarn "There is no fastbuild patch available for this PHP release yet!" + fi fi - # fix configure scripts to correctly support HardenedPHP + # Fix configure scripts to correctly support Hardened-PHP einfo "Running aclocal" WANT_AUTOMAKE=1.9 aclocal --force || die "Unable to run aclocal successfully" einfo "Running libtoolize" libtoolize --copy --force || die "Unable to run libtoolize successfully" - # rebuild configure to make sure it's up to date + # Rebuild configure to make sure it's up to date einfo "Rebuilding configure script" WANT_AUTOCONF=2.5 autoreconf --force -W no-cross || die "Unable to regenerate configure script successfully" - # run elibtoolize + # Run elibtoolize elibtoolize # Just in case ;-) - chmod 755 configure || die "Failed to chmod configure to 755" -} - -set_php_ini_dir() { - PHP_INI_DIR="/etc/php/${PHPSAPI}-php5" - PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext" - PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active" + chmod 0755 configure || die "Failed to chmod configure to 0755" } php5_1-sapi_src_compile() { destdir=/usr/$(get_libdir)/php5 - set_php_ini_dir + php5_1-sapi_set_php_ini_dir cd "${S}" confutils_init my_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR} --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE} --without-pear" - # extension USE flag shared support? + # extension USE flag shared support? enable_extension_enable "bcmath" "bcmath" 1 enable_extension_with "bz2" "bzip2" 1 enable_extension_enable "calendar" "calendar" 1 @@ -354,6 +391,7 @@ php5_1-sapi_src_compile() { enable_extension_enable "ftp" "ftp" 1 enable_extension_with "gettext" "nls" 1 enable_extension_with "gmp" "gmp" 1 + enable_extension_disable "hash" "hash" 0 enable_extension_with "hwapi" "hyperwave-api" 1 enable_extension_without "iconv" "iconv" 0 enable_extension_with "informix" "informix" 1 @@ -370,8 +408,12 @@ php5_1-sapi_src_compile() { enable_extension_with "mssql" "mssql" 1 enable_extension_with "ncurses" "ncurses" 1 enable_extension_with "oci8" "oci8" 1 - enable_extension_with "oci8-instant-client" "oci8-instant-client" 1 - enable_extension_with "openssl" "ssl" 1 + if useq oci8-instant-client ; then + OCI8IC_PKG="`best_version dev-db/oracle-instantclient-basic`" + OCI8IC_PKG="`printf ${OCI8IC_PKG} | sed -e 's|dev-db/oracle-instantclient-basic-||g' | sed -e 's|-r.*||g'`" + fi + enable_extension_with "oci8" "oci8-instant-client" 1 "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib" + enable_extension_with "openssl" "ssl" 0 enable_extension_with "openssl-dir" "ssl" 0 "/usr" enable_extension_enable "pcntl" "pcntl" 1 enable_extension_without "pcre-regex" "pcre" 0 @@ -380,6 +422,7 @@ php5_1-sapi_src_compile() { enable_extension_disable "posix" "posix" 1 enable_extension_with "pspell" "spell" 1 enable_extension_with "recode" "recode" 1 + enable_extension_disable "reflection" "reflection" 0 enable_extension_disable "simplexml" "simplexml" 1 enable_extension_enable "shmop" "sharedmem" 0 enable_extension_with "snmp" "snmp" 1 @@ -395,7 +438,8 @@ php5_1-sapi_src_compile() { enable_extension_disable "tokenizer" "tokenizer" 1 enable_extension_enable "wddx" "wddx" 1 enable_extension_disable "xml" "xml" 0 - enable_extension_with "xmlreader" "xmlreader" 1 + enable_extension_disable "xmlreader" "xmlreader" 1 + enable_extension_disable "xmlwriter" "xmlwriter" 1 enable_extension_with "xmlrpc" "xmlrpc" 1 enable_extension_with "xsl" "xsl" 1 enable_extension_with "zlib" "zlib" 1 @@ -413,7 +457,7 @@ php5_1-sapi_src_compile() { enable_extension_with "qdbm" "qdbm" 1 fi - # support for the GD graphics library + # Support for the GD graphics library if useq gd-external ; then enable_extension_with "freetype-dir" "truetype" 0 "/usr" enable_extension_with "t1lib" "truetype" 0 "/usr" @@ -440,7 +484,7 @@ php5_1-sapi_src_compile() { # Interbase support if useq firebird || useq interbase ; then - my_conf="${my_conf} --with-interbase" + my_conf="${my_conf} --with-interbase=/usr" fi # LDAP support @@ -497,14 +541,14 @@ php5_1-sapi_src_compile() { enable_extension_with "readline" "readline" 0 enable_extension_with "libedit" "libedit" 1 - # session support + # Session support if ! useq session ; then enable_extension_disable "session" "session" 1 else enable_extension_with "mm" "sharedmem" 0 fi - # sqlite support + # Sqlite support if ! useq sqlite ; then enable_extension_without "sqlite" "sqlite" 0 else @@ -521,7 +565,7 @@ php5_1-sapi_src_compile() { my_conf="${my_conf} --with-zend-vm=SWITCH" fi - # fix ELF-related problems + # Fix ELF-related problems if useq pic ; then einfo "Enabling PIC support" my_conf="${my_conf} --with-pic" @@ -529,11 +573,11 @@ php5_1-sapi_src_compile() { # apache2 & threads support if useq apache2 && useq threads ; then - my_conf="${my_conf} --enable-maintainer-zts --enable-experimental-zts" + my_conf="${my_conf} --enable-maintainer-zts" ewarn "Enabling ZTS for Apache2 MPM" fi - # catch cflag problems + # Catch CFLAGS problems php_check_cflags # multilib support @@ -541,9 +585,7 @@ php5_1-sapi_src_compile() { my_conf="--with-libdir=$(get_libdir) ${my_conf}" fi - # all done - - # we don't use econf, because we need to override all of its settings + # We don't use econf, because we need to override all of its settings ./configure --prefix=${destdir} --sysconfdir=/etc --cache-file=./config.cache ${my_conf} || die "configure failed" emake || die "make failed" } @@ -558,7 +600,7 @@ php5_1-sapi_src_install() { useq sharedext && PHP_INSTALLTARGETS="${PHP_INSTALLTARGETS} install-modules" make INSTALL_ROOT="${D}" ${PHP_INSTALLTARGETS} || die "install failed" - # install missing header files + # Install missing header files if useq nls ; then dodir ${destdir}/include/php/ext/mbstring/libmbfl/mbfl insinto ${destdir}/include/php/ext/mbstring/libmbfl/mbfl @@ -567,16 +609,15 @@ php5_1-sapi_src_install() { done fi - # get the extension dir + # Get the extension dir PHPEXTDIR="`"${D}/${destdir}/bin/php-config" --extension-dir`" - # don't forget the php.ini file + # Don't forget the php.ini file local phpinisrc=php.ini-dist einfo "Setting extension_dir in php.ini" sed -e "s|^extension_dir .*$|extension_dir = ${PHPEXTDIR}|g" -i ${phpinisrc} - # A patch for PHP for security. PHP-CLI interface is exempt, as it cannot be - # fed bad data from outside. + # A patch for PHP for security einfo "Securing fopen wrappers" sed -e 's|^allow_url_fopen .*|allow_url_fopen = Off|g' -i ${phpinisrc} @@ -584,39 +625,10 @@ php5_1-sapi_src_install() { einfo "Setting correct include_path" sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:/usr/share/php5:/usr/share/php"|' -i ${phpinisrc} - # create the directory where we'll put php5-only php scripts + # Create the directory where we'll put php5-only php scripts keepdir /usr/share/php5 } -php5_1-sapi_install_ini() { - destdir=/usr/$(get_libdir)/php5 - - # get the extension dir - PHPEXTDIR="`"${D}/${destdir}/bin/php-config" --extension-dir`" - - # work out where we are installing the ini file - set_php_ini_dir - - local phpinisrc=php.ini-dist - - dodir ${PHP_INI_DIR} - insinto ${PHP_INI_DIR} - newins ${phpinisrc} ${PHP_INI_FILE} - - dodir ${PHP_EXT_INI_DIR} - dodir ${PHP_EXT_INI_DIR_ACTIVE} - - # Install any extensions built as shared objects - if useq sharedext ; then - for x in `ls "${D}/${PHPEXTDIR}/"*.so | sort` ; do - inifilename=${x/.so/.ini} - inifilename=`basename ${inifilename}` - echo "extension=`basename ${x}`" >> "${D}/${PHP_EXT_INI_DIR}/${inifilename}" - dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}" - done - fi -} - php5_1-sapi_pkg_postinst() { # Update Apache1 to use mod_php if useq apache ; then |