From aeb9350cfbd2f4675f0d095394660cc0c2cc0d7b Mon Sep 17 00:00:00 2001 From: Gustavo Zacarias Date: Mon, 21 May 2012 01:17:54 +0000 Subject: [PATCH] php: security bump to version 5.3.13 and enhance Bump php to version 5.3.13 to solve multiple CVEs. The 5.2 series is no longer maintained. The PCRE and SPL extensions are no longer optional. Reflection is no longer optional either. Ncurses was spun out to PECL. Add a ton of new extensions and give more granular options on others (like the libxml2-based ones). The FastCGI option no longer exists, it's always on as long as CGI is. Signed-off-by: Gustavo Zacarias Signed-off-by: Peter Korsgaard --- package/php/Config.ext | 355 +++++++++++++----- package/php/Config.in | 32 +- ..._GMP_BITS_PER_MP_LIMB-is-not-defined.patch | 30 -- package/php/php-no-iconv-search.patch | 21 ++ package/php/php.mk | 199 +++++----- 5 files changed, 400 insertions(+), 237 deletions(-) delete mode 100644 package/php/php-5.2.16-fix-build-when-__GMP_BITS_PER_MP_LIMB-is-not-defined.patch create mode 100644 package/php/php-no-iconv-search.patch diff --git a/package/php/Config.ext b/package/php/Config.ext index bd630eeb60..fa73bb4de0 100644 --- a/package/php/Config.ext +++ b/package/php/Config.ext @@ -1,28 +1,21 @@ -menu "PHP Extensions" +menu "Extensions" -config BR2_PACKAGE_PHP_CONFIG - string "PHP configuration file to use" - default "$(PHP_DIR)/php.ini-dist" - help - If you want to use a different php.ini file define it here. - Otherwise it'll just copy the default php.ini-dist from PHP. - -config BR2_PACKAGE_PHP_EXT_SOCKETS - bool "socket" +config BR2_PACKAGE_PHP_EXT_CALENDAR + bool "Calendar" help - Sockets support + Calendar and event support -config BR2_PACKAGE_PHP_EXT_POSIX - bool "posix" - default y +config BR2_PACKAGE_PHP_EXT_FILEINFO + bool "Fileinfo" help - POSIX support + File Information support -config BR2_PACKAGE_PHP_EXT_SPL - bool "SPL" - default y +config BR2_PACKAGE_PHP_EXT_READLINE + bool "Readline" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE help - Standard PHP library support + Readline support config BR2_PACKAGE_PHP_EXT_SESSION bool "Session" @@ -30,156 +23,320 @@ config BR2_PACKAGE_PHP_EXT_SESSION help Session support +comment "Compression extensions" + +config BR2_PACKAGE_PHP_EXT_BZIP2 + bool "bzip2" + select BR2_PACKAGE_BZIP2 + help + bzip2 read/write support + +config BR2_PACKAGE_PHP_EXT_ZIP + bool "zip" + select BR2_PACKAGE_ZLIB + help + Zip read/write support + +config BR2_PACKAGE_PHP_EXT_ZLIB + bool "zlib" + select BR2_PACKAGE_ZLIB + default y + help + zlib support + +comment "Cryptography extensions" + +config BR2_PACKAGE_PHP_EXT_HASH + bool "hash" + help + HASH message digest framework + config BR2_PACKAGE_PHP_EXT_OPENSSL bool "openssl" select BR2_PACKAGE_OPENSSL help openssl support -config BR2_PACKAGE_PHP_EXT_LIBXML2 - bool "xml2" - select BR2_PACKAGE_LIBXML2 +comment "Database extensions" + +config BR2_PACKAGE_PHP_EXT_DBA + bool "DBA" help - libxml2 support + Database Abstraction Layer -config BR2_PACKAGE_PHP_EXT_SIMPLEXML - bool "simplexml" - select BR2_PACKAGE_PHP_EXT_LIBXML2 +if BR2_PACKAGE_PHP_EXT_DBA + +config BR2_PACKAGE_PHP_EXT_DBA_CDB + bool "cdb" help - SimpleXML support + CDB handler -config BR2_PACKAGE_PHP_EXT_ZLIB - bool "zlib" - select BR2_PACKAGE_ZLIB - default y - help - zlib support +config BR2_PACKAGE_PHP_EXT_DBA_DB4 + bool "db4/5" + select BR2_PACKAGE_BERKELEYDB + help + BerkeleyDB version 4/5 handler -config BR2_PACKAGE_PHP_EXT_EXIF - bool "EXIF" +config BR2_PACKAGE_PHP_EXT_DBA_FLAT + bool "flat" + default y help - EXIF support + Flat file handler -config BR2_PACKAGE_PHP_EXT_FTP - bool "FTP" +config BR2_PACKAGE_PHP_EXT_DBA_INI + bool "ini" + default y + help + INI file handler + +endif + +config BR2_PACKAGE_PHP_EXT_SQLITE + bool "SQLite" + help + Legacy SQLite2 support + +config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8 + bool "sqlite UTF8 support" + depends on BR2_PACKAGE_PHP_EXT_SQLITE + help + UTF8 support for sqlite + +config BR2_PACKAGE_PHP_EXT_MYSQL + bool "Mysql" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_MYSQL_CLIENT + help + MySQL support + +config BR2_PACKAGE_PHP_EXT_MYSQLI + bool "Mysqli" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_MYSQL_CLIENT + select BR2_PACKAGE_PHP_EXT_MYSQL + help + MySQL Improved extension support + +config BR2_PACKAGE_PHP_EXT_PDO + bool "PDO" + help + PHP Data Objects support + +if BR2_PACKAGE_PHP_EXT_PDO + +config BR2_PACKAGE_PHP_EXT_PDO_MYSQL + bool "MySQL" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_MYSQL_CLIENT + help + PDO driver for MySQL + +comment "MySQL drivers require a toolchain with C++ support" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_PHP_EXT_PDO_SQLITE + bool "SQLite3" + select BR2_PACKAGE_SQLITE help - FTP Support + SQLite3 driver for PDO + +endif + +comment "Human language and character encoding support" config BR2_PACKAGE_PHP_EXT_GETTEXT - bool "gettext" + bool "Gettext" select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT depends on BR2_USE_WCHAR help - gettext support + Gettext support -comment "gettext support requires a toolchain with WCHAR support" +comment "Gettext support requires a toolchain with WCHAR support" depends on !BR2_USE_WCHAR +config BR2_PACKAGE_PHP_EXT_ICONV + bool "iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + iconv character set conversion support + +config BR2_PACKAGE_PHP_EXT_INTL + bool "intl" + select BR2_PACKAGE_ICU + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + Internationalization support + +comment "intl support requires a toolchain with C++ and WCHAR support" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +comment "Image processing" + +config BR2_PACKAGE_PHP_EXT_EXIF + bool "EXIF" + help + EXIF support + +comment "Mathematical extensions" + +config BR2_PACKAGE_PHP_EXT_BCMATH + bool "BC math" + help + BCMath arbitrary precision mathematics support + config BR2_PACKAGE_PHP_EXT_GMP - bool "gmp" + bool "GMP" select BR2_PACKAGE_GMP help - GMP support + GNU Multiple Precision support + +comment "Other basic extensions" config BR2_PACKAGE_PHP_EXT_JSON bool "JSON" help JavaScript Object Serialization support -config BR2_PACKAGE_PHP_EXT_READLINE - bool "readline" - depends on (BR2_PACKAGE_PHP_CLI || BR2_PACKAGE_PHP_CGI) && BR2_PACKAGE_READLINE +config BR2_PACKAGE_PHP_EXT_TOKENIZER + bool "Tokenizer" + help + Tokenizer functions support + +comment "Other services" + +config BR2_PACKAGE_PHP_EXT_CURL + bool "cURL" + select BR2_PACKAGE_LIBCURL + help + cURL for URL streams + +config BR2_PACKAGE_PHP_EXT_FTP + bool "FTP" help - readline support + FTP support -config BR2_PACKAGE_PHP_EXT_NCURSES - bool "ncurses" - depends on (BR2_PACKAGE_PHP_CLI || BR2_PACKAGE_PHP_CGI) && BR2_PACKAGE_NCURSES +config BR2_PACKAGE_PHP_EXT_SNMP + bool "SNMP" + select BR2_PACKAGE_NETSNMP help - ncurses support + SNMP support -config BR2_PACKAGE_PHP_EXT_PCRE - bool "PCRE" +config BR2_PACKAGE_PHP_EXT_SOCKETS + bool "sockets" help - Perl Compatible Regular Expressions support + Sockets support + +comment "Process Control" config BR2_PACKAGE_PHP_EXT_PCNTL bool "PCNTL" help - Process Control Support + Process control support + +config BR2_PACKAGE_PHP_EXT_POSIX + bool "Posix" + default y + help + POSIX.1 (IEEE 1003.1) function support + +config BR2_PACKAGE_PHP_EXT_SHMOP + bool "shmop" + help + Shared memory support config BR2_PACKAGE_PHP_EXT_SYSVMSG - bool "sysvmsg - System V Message queue" + bool "sysvmsg" help - System V Message queue support + System V message queue support config BR2_PACKAGE_PHP_EXT_SYSVSEM - bool "sysvsem - System V Semaphores" + bool "sysvsem" help - System V Sempahore support + System V semaphore support config BR2_PACKAGE_PHP_EXT_SYSVSHM - bool "sysvshm - System V Shared memory" + bool "sysvshm" help - System V Shared memory support + System V shared memory support -config BR2_PACKAGE_PHP_EXT_ZIP - bool "zip" - select BR2_PACKAGE_ZLIB +comment "Variable and Type related" + +config BR2_PACKAGE_PHP_EXT_CTYPE + bool "Ctype" help - Zip read/write support + Character type checking support config BR2_PACKAGE_PHP_EXT_FILTER - bool "filter" - select BR2_PACKAGE_PHP_EXT_PCRE + bool "Filter" help Input filter support -config BR2_PACKAGE_PHP_EXT_CALENDAR - bool "calendar" +comment "Web services" + +config BR2_PACKAGE_PHP_EXT_SOAP + bool "SOAP" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - Calendar and event support + SOAP support -comment "Database extensions" +config BR2_PACKAGE_PHP_EXT_XMLRPC + bool "XML-RPC" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + XML-RPC support -config BR2_PACKAGE_PHP_EXT_SQLITE - bool "SQLite" +comment "XML manipulation" + +config BR2_PACKAGE_PHP_EXT_DOM + bool "DOM" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - Legacy SQLite2 support + Document Object Model support -config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8 - bool "sqlite UTF8 support" - depends on BR2_PACKAGE_PHP_EXT_SQLITE +config BR2_PACKAGE_PHP_EXT_LIBXML2 + bool "libxml" + select BR2_PACKAGE_LIBXML2 + help + libxml2 support + +config BR2_PACKAGE_PHP_EXT_SIMPLEXML + bool "SimpleXML" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - UTF8 Support for sqlite + SimpleXML support -config BR2_PACKAGE_PHP_EXT_PDO - bool "PDO" +config BR2_PACKAGE_PHP_EXT_WDDX + bool "WDDX" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - PHP Data Objects support + WDDX support -config BR2_PACKAGE_PHP_EXT_PDO_SQLITE - bool "PDO_SQLite" - depends on BR2_PACKAGE_PHP_EXT_PDO +config BR2_PACKAGE_PHP_EXT_XML + bool "XML Parser" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - SQLite driver for PDO + XML Parser support -config BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL - bool "PDO_SQLite external" - depends on BR2_PACKAGE_PHP_EXT_PDO_SQLITE - select BR2_PACKAGE_SQLITE +config BR2_PACKAGE_PHP_EXT_XMLREADER + bool "XMLReader" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - Use external sqlite3 library + XMLReader support -config BR2_PACKAGE_PHP_EXT_PDO_MYSQL - bool "PDO_MySQL" - depends on BR2_PACKAGE_PHP_EXT_PDO - depends on BR2_INSTALL_LIBSTDCPP - select BR2_PACKAGE_MYSQL_CLIENT +config BR2_PACKAGE_PHP_EXT_XMLWRITER + bool "XMLWriter" + select BR2_PACKAGE_PHP_EXT_LIBXML2 help - PDO driver for MySQL + XMLWriter support -comment "PDO_MySQL requires a toolchain with C++ support" - depends on !BR2_INSTALL_LIBSTDCPP && BR2_PACKAGE_PHP_EXT_PDO +config BR2_PACKAGE_PHP_EXT_XSL + bool "XSL" + select BR2_PACKAGE_PHP_EXT_DOM + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + XSL transformation support endmenu diff --git a/package/php/Config.in b/package/php/Config.in index 23d86e48e7..c8c100cbdf 100644 --- a/package/php/Config.in +++ b/package/php/Config.in @@ -9,6 +9,8 @@ config BR2_PACKAGE_PHP if BR2_PACKAGE_PHP +source "package/php/Config.ext" + config BR2_PACKAGE_PHP_CLI bool @@ -16,38 +18,30 @@ config BR2_PACKAGE_PHP_CGI bool choice - prompt "PHP interface" + prompt "Interface" default BR2_PACKAGE_PHP_SAPI_CGI help Select the PHP interface(s). +config BR2_PACKAGE_PHP_SAPI_CGI + bool "CGI" + select BR2_PACKAGE_PHP_CGI + help + Common Gateway Interface + config BR2_PACKAGE_PHP_SAPI_CLI - bool "cli interface" + bool "CLI" select BR2_PACKAGE_PHP_CLI help - Command line interface for PHP. - -config BR2_PACKAGE_PHP_SAPI_CGI - bool "cgi interface" - select BR2_PACKAGE_PHP_CGI - help - CGI interface for PHP. + Command Line Interface config BR2_PACKAGE_PHP_SAPI_CLI_CGI - bool "cli and cgi interfaces" + bool "CGI and CLI" select BR2_PACKAGE_PHP_CLI select BR2_PACKAGE_PHP_CGI help - Command line and CGI interfaces for PHP. + Command line and Common gateway interfaces endchoice -config BR2_PACKAGE_PHP_FASTCGI - bool "fastcgi" - depends on BR2_PACKAGE_PHP_CGI - default y - help - fast cgi interface for php - -source "package/php/Config.ext" endif diff --git a/package/php/php-5.2.16-fix-build-when-__GMP_BITS_PER_MP_LIMB-is-not-defined.patch b/package/php/php-5.2.16-fix-build-when-__GMP_BITS_PER_MP_LIMB-is-not-defined.patch deleted file mode 100644 index 221b3c00e5..0000000000 --- a/package/php/php-5.2.16-fix-build-when-__GMP_BITS_PER_MP_LIMB-is-not-defined.patch +++ /dev/null @@ -1,30 +0,0 @@ -From e814fcac0599dbaae50ede1f9f78e20941e27877 Mon Sep 17 00:00:00 2001 -From: pajoye -Date: Tue, 23 Feb 2010 11:07:39 +0000 -Subject: [PATCH] - fix build when __GMP_BITS_PER_MP_LIMB is not defined but GMP_LIMB_BITS (no trace of this change in gmp's changelog...) - -git-svn-id: http://svn.php.net/repository/php/php-src/branches/PHP_5_3@295402 c90b9560-bf6c-de11-be94-00142212c4b1 ---- - ext/gmp/gmp.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c -index a54ffe9..f53dcd6 100644 ---- a/ext/gmp/gmp.c -+++ b/ext/gmp/gmp.c -@@ -1374,8 +1374,11 @@ ZEND_FUNCTION(gmp_random) - - GMPG(rand_initialized) = 1; - } -+#ifdef GMP_LIMB_BITS -+ mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * GMP_LIMB_BITS); -+#else - mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * __GMP_BITS_PER_MP_LIMB); -- -+#endif - ZEND_REGISTER_RESOURCE(return_value, gmpnum_result, le_gmp); - } - /* }}} */ --- -1.7.1 - diff --git a/package/php/php-no-iconv-search.patch b/package/php/php-no-iconv-search.patch new file mode 100644 index 0000000000..d1e924b1ab --- /dev/null +++ b/package/php/php-no-iconv-search.patch @@ -0,0 +1,21 @@ +Don't push LDFLAGS/CFLAGS for iconv. +Just assume they're covered somewhere else. +Otherwise we get -L/usr/lib and -I/usr/include search paths with uClibc +internal iconv support, which breaks things. + +Signed-off-by: Gustavo Zacarias + +diff -Nura php-5.3.13/configure php-5.3.13-iconv/configure +--- php-5.3.13/configure 2012-05-08 06:41:23.000000000 -0300 ++++ php-5.3.13-iconv/configure 2012-05-18 22:18:21.313975849 -0300 +@@ -47885,8 +47885,8 @@ + PHP_ICONV_PREFIX="$ICONV_DIR" + fi + +- CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS" +- LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS" ++ #CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS" ++ #LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS" + + if test -r "$PHP_ICONV_PREFIX/include/giconv.h"; then + PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h" diff --git a/package/php/php.mk b/package/php/php.mk index 6de6a9e83d..e9bda447f6 100644 --- a/package/php/php.mk +++ b/package/php/php.mk @@ -4,53 +4,59 @@ # ############################################################# -PHP_VERSION = 5.2.17 +PHP_VERSION = 5.3.13 PHP_SOURCE = php-$(PHP_VERSION).tar.bz2 PHP_SITE = http://www.php.net/distributions PHP_INSTALL_STAGING = YES PHP_INSTALL_STAGING_OPT = INSTALL_ROOT=$(STAGING_DIR) install PHP_INSTALL_TARGET_OPT = INSTALL_ROOT=$(TARGET_DIR) install -PHP_LIBTOOL_PATCH = NO PHP_CONF_OPT = --mandir=/usr/share/man \ --infodir=/usr/share/info \ --disable-all \ --without-pear \ --with-config-file-path=/etc \ --localstatedir=/var \ + --disable-rpath PHP_CFLAGS = $(TARGET_CFLAGS) -ifneq ($(BR2_PACKAGE_PHP_CLI),y) - PHP_CONF_OPT += --disable-cli -else - PHP_CONF_OPT += --enable-cli -endif - -ifneq ($(BR2_PACKAGE_PHP_CGI),y) - PHP_CONF_OPT += --disable-cgi -else - PHP_CONF_OPT += --enable-cgi - ifeq ($(BR2_PACKAGE_PHP_FASTCGI),y) - PHP_CONF_OPT += --enable-fastcgi - endif +# Workaround for non-IPv6 uClibc toolchain +ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_CTNG_uClibc),y) +ifneq ($(BR2_INET_IPV6),y) + PHP_CFLAGS += -DHAVE_DEPRECATED_DNS_FUNCS endif - -### Extensions -ifeq ($(BR2_PACKAGE_PHP_EXT_SOCKETS),y) - PHP_CONF_OPT += --enable-sockets -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_POSIX),y) - PHP_CONF_OPT += --enable-posix endif -ifeq ($(BR2_PACKAGE_PHP_EXT_SPL),y) - PHP_CONF_OPT += --enable-spl -endif +PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CLI),,--disable-cli) +PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CGI),,--disable-cgi) -ifeq ($(BR2_PACKAGE_PHP_EXT_SESSION),y) - PHP_CONF_OPT += --enable-session -endif +### Extensions +PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \ + $(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \ + $(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \ + $(if $(BR2_PACKAGE_PHP_EXT_HASH),--enable-hash) \ + $(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \ + $(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \ + $(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \ + $(if $(BR2_PACKAGE_PHP_EXT_WDDX),--enable-wddx) \ + $(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \ + $(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \ + $(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \ + $(if $(BR2_PACKAGE_PHP_EXT_JSON),--enable-json) \ + $(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \ + $(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \ + $(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \ + $(if $(BR2_PACKAGE_PHP_EXT_ZIP),--enable-zip) \ + $(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \ + $(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILENIFO),--enable-fileinfo) \ + $(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath) ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y) PHP_CONF_OPT += --with-openssl=$(STAGING_DIR)/usr @@ -58,16 +64,14 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y) endif ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y) - PHP_CONF_OPT += --enable-libxml \ - --with-libxml-dir=${STAGING_DIR}/usr \ - --enable-xml \ - --enable-xmlreader \ - --enable-xmlwriter + PHP_CONF_OPT += --enable-libxml --with-libxml-dir=${STAGING_DIR}/usr PHP_DEPENDENCIES += libxml2 endif -ifeq ($(BR2_PACKAGE_PHP_EXT_SIMPLEXML),y) - PHP_CONF_OPT += --enable-simplexml +ifeq ($(BR2_PACKAGE_PHP_EXT_XMLRPC),y) + PHP_CONF_OPT += --with-xmlrpc \ + $(if $(BR2_PACKAGE_LIBICONV),--with-iconv-dir=$(STAGING_DIR)/usr) + PHP_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) endif ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),) @@ -75,17 +79,23 @@ ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),) PHP_DEPENDENCIES += zlib endif -ifeq ($(BR2_PACKAGE_PHP_EXT_EXIF),y) - PHP_CONF_OPT += --enable-exif +ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y) + PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext) endif -ifeq ($(BR2_PACKAGE_PHP_EXT_FTP),y) - PHP_CONF_OPT += --enable-ftp +ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y) +ifeq ($(BR2_PACKAGE_LIBICONV),y) + PHP_CONF_OPT += --with-iconv=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += libiconv +else + PHP_CONF_OPT += --with-iconv +endif endif -ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y) - PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr - PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext) +ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y) + PHP_CONF_OPT += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += icu endif ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y) @@ -93,52 +103,11 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y) PHP_DEPENDENCIES += gmp endif -ifeq ($(BR2_PACKAGE_PHP_EXT_JSON),y) - PHP_CONF_OPT += --enable-json -endif - ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y) PHP_CONF_OPT += --with-readline=$(STAGING_DIR)/usr PHP_DEPENDENCIES += readline endif -ifeq ($(BR2_PACKAGE_PHP_EXT_NCURSES),y) - PHP_CONF_OPT += --with-ncurses=$(STAGING_DIR)/usr - PHP_DEPENDENCIES += ncurses -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_PCNTL),y) - PHP_CONF_OPT += --enable-pcntl -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVMSG),y) - PHP_CONF_OPT += --enable-sysvmsg -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSEM),y) - PHP_CONF_OPT += --enable-sysvsem -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSHM),y) - PHP_CONF_OPT += --enable-sysvshm -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y) - PHP_CONF_OPT += --enable-zip -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_FILTER),y) - PHP_CONF_OPT += --enable-filter -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_CALENDAR),y) - PHP_CONF_OPT += --enable-calendar -endif - -ifeq ($(BR2_PACKAGE_PHP_EXT_PCRE),y) - PHP_CONF_OPT += --with-pcre-regex -endif - ### Legacy sqlite2 support ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y) PHP_CONF_OPT += --with-sqlite @@ -150,16 +119,22 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE_UTF8),y) endif endif +### Native MySQL extensions +ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQL),y) + PHP_CONF_OPT += --with-mysql=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += mysql_client +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y) + PHP_CONF_OPT += --with-mysqli=$(STAGING_DIR)/usr/bin/mysql_config + PHP_DEPENDENCIES += mysql_client +endif + ### PDO ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y) PHP_CONF_OPT += --enable-pdo ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y) -ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL),y) PHP_CONF_OPT += --with-pdo-sqlite=$(STAGING_DIR)/usr PHP_DEPENDENCIES += sqlite -else - PHP_CONF_OPT += --with-pdo-sqlite -endif PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION ifneq ($(BR2_LARGEFILE),y) PHP_CFLAGS += -DSQLITE_DISABLE_LFS @@ -171,6 +146,50 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y) endif endif +### Use external PCRE if it's available +ifeq ($(BR2_PACKAGE_PCRE),y) + PHP_CONF_OPT += --with-pcre-regex=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += pcre +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y) + PHP_CONF_OPT += --with-curl=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += libcurl +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y) + PHP_CONF_OPT += --with-xsl=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += libxslt +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y) + PHP_CONF_OPT += --with-bz2=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += bzip2 +endif + +### DBA +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y) + PHP_CONF_OPT += --enable-dba +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y) + PHP_CONF_OPT += --without-cdb +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y) + PHP_CONF_OPT += --without-flatfile +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y) + PHP_CONF_OPT += --without-inifile +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y) + PHP_CONF_OPT += --with-db4=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += berkeleydb +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y) + PHP_CONF_OPT += --with-snmp=$(STAGING_DIR)/usr + PHP_DEPENDENCIES += netsnmp +endif + # Fixup prefix= and exec_prefix= in php-config define PHP_FIXUP_PHP_CONFIG $(SED) 's%^prefix="/usr"%prefix="$(STAGING_DIR)/usr"%' \ @@ -185,7 +204,9 @@ define PHP_INSTALL_FIXUP rm -f $(TARGET_DIR)/usr/bin/phpize rm -f $(TARGET_DIR)/usr/bin/php-config if [ ! -f $(TARGET_DIR)/etc/php.ini ]; then \ - $(INSTALL) -m 0755 $(BR2_PACKAGE_PHP_CONFIG) $(TARGET_DIR)/etc/php.ini; fi + $(INSTALL) -m 0755 $(PHP_DIR)/php.ini-production \ + $(TARGET_DIR)/etc/php.ini; \ + fi endef PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP -- 2.30.2