parent
17d11502e0
commit
93444e3efb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,10 +1,14 @@
|
|||||||
DIST php-5.6-openssl-1.1-compatibility.patch 42559 BLAKE2B b7f13866cd8545543143932930f31bcd928fa0b4b36ef63f04798b9ef4699f12b4f4227772ac9e6e5c498aaeacf7b106abcfa48031a12214e123de4b79d3a4cd SHA512 eed695a3dd7ce27e8651b4a4b96ccd0514f256e7d2f0214fac899e9eeea6412aa24f863f1b5d13305bcac50667ccb62709597fb34da1002b005ebf411dd2f5df
|
DIST php-5.6-openssl-1.1-compatibility.patch 42559 BLAKE2B b7f13866cd8545543143932930f31bcd928fa0b4b36ef63f04798b9ef4699f12b4f4227772ac9e6e5c498aaeacf7b106abcfa48031a12214e123de4b79d3a4cd SHA512 eed695a3dd7ce27e8651b4a4b96ccd0514f256e7d2f0214fac899e9eeea6412aa24f863f1b5d13305bcac50667ccb62709597fb34da1002b005ebf411dd2f5df
|
||||||
DIST php-5.6.38.tar.xz 12467408 BLAKE2B d9ee47e193d80bce8a9ed6ffd3eb13e67ba6d1f597ece2803cd92fddc6245f46cdfe644d6cda12a6bb409b92c1fe748610cc5eb43dea0bf063fda81188ee8b3d SHA512 66c51a8e954b1496c0bad0a2864a2a1537dd1c1c573b553991d6d5bce85fc7bc340e56a21109bc5e9a03799e703204b980b569c95a5c0a1bddb01c8947e7a682
|
DIST php-5.6.38.tar.xz 12467408 BLAKE2B d9ee47e193d80bce8a9ed6ffd3eb13e67ba6d1f597ece2803cd92fddc6245f46cdfe644d6cda12a6bb409b92c1fe748610cc5eb43dea0bf063fda81188ee8b3d SHA512 66c51a8e954b1496c0bad0a2864a2a1537dd1c1c573b553991d6d5bce85fc7bc340e56a21109bc5e9a03799e703204b980b569c95a5c0a1bddb01c8947e7a682
|
||||||
|
DIST php-5.6.39.tar.xz 12467096 BLAKE2B 354b147c0fcc13eeec0ab333bcaa32ad26e2f4eef19a0ee52cf596ff96997eaf32cbb6d980cacf643167ed01b06ee9d27eeb7c00c95c8023d305c967c1ce3539 SHA512 814ea2d74df9c3c7041769803ceb4ba20dbfc18885ff85f91dca0c3ab694e3ebfb6a564427d116b35382fe292583a54d449f2528495032ca9724cfbdea82c226
|
||||||
DIST php-7.0.32.tar.xz 12030780 BLAKE2B 0c277eac4c931a6e30954cceb7feef8dea1c3ef4aebac91779b7e1a6f90f608faa93d1750a2dc8f354c73304e0f7a9b9ac17bb0d1da4768ddb68925752c11aef SHA512 4a7c9a6b91ad7da69303916202062d639e6f02dcd483e851a44d8c7a2efeb5c9a666097935ab60d700c4445f86a0c68df1515300c57af1cdb76528b54b757608
|
DIST php-7.0.32.tar.xz 12030780 BLAKE2B 0c277eac4c931a6e30954cceb7feef8dea1c3ef4aebac91779b7e1a6f90f608faa93d1750a2dc8f354c73304e0f7a9b9ac17bb0d1da4768ddb68925752c11aef SHA512 4a7c9a6b91ad7da69303916202062d639e6f02dcd483e851a44d8c7a2efeb5c9a666097935ab60d700c4445f86a0c68df1515300c57af1cdb76528b54b757608
|
||||||
|
DIST php-7.0.33.tar.xz 12033040 BLAKE2B cb7a4eb3ba8ede93ae8e85b6a11664f33654f7e94fa077ac9a33ab95157c0c2b3b05f98413e13e36f710c6d00b35d49d38bf26092a36e508b88805d092764287 SHA512 9298e185702ea801e9243671ecb0b781c2b04181a2f9fd6490bc14897a333a2c0cc88fe27b0c69c6dd0079629a71c330ed1aa337f48cac6cbd624addb8855500
|
||||||
DIST php-7.1.22.tar.xz 12227848 BLAKE2B 72fab94b1c7ecfd3479f6d6c9a76a9d8813f7789402664201615d79ab8b5bb26fb1b7273769c4898a36f0336e0ce4d50bf2f17b81ddb54acc9583e39623e3a5b SHA512 0fc0907d303711dbc4ba0a18618e3e73550c73d13988c769f8d50066017b1efe3feb0d22d5539f69271ea4e9532a3d997e22841cb59bdbf96313169e1c03538d
|
DIST php-7.1.22.tar.xz 12227848 BLAKE2B 72fab94b1c7ecfd3479f6d6c9a76a9d8813f7789402664201615d79ab8b5bb26fb1b7273769c4898a36f0336e0ce4d50bf2f17b81ddb54acc9583e39623e3a5b SHA512 0fc0907d303711dbc4ba0a18618e3e73550c73d13988c769f8d50066017b1efe3feb0d22d5539f69271ea4e9532a3d997e22841cb59bdbf96313169e1c03538d
|
||||||
DIST php-7.1.23.tar.xz 12227528 BLAKE2B d03470b07ae041c4677e100c1b4f7994d3e15d4830eccba3c654c1f3546345c8205cac057011d2d43ab962ebbc01652f6748270daa40aa1e540453923500288c SHA512 d5a451f1a48415175e3117ffa84ef3504275a407698b59c13eeb403958aa27342e04dc4ffea9791b923ac0cc5d6fdacf2e8672f0e19755bae858707c7fc3627f
|
DIST php-7.1.23.tar.xz 12227528 BLAKE2B d03470b07ae041c4677e100c1b4f7994d3e15d4830eccba3c654c1f3546345c8205cac057011d2d43ab962ebbc01652f6748270daa40aa1e540453923500288c SHA512 d5a451f1a48415175e3117ffa84ef3504275a407698b59c13eeb403958aa27342e04dc4ffea9791b923ac0cc5d6fdacf2e8672f0e19755bae858707c7fc3627f
|
||||||
DIST php-7.1.24.tar.xz 12205112 BLAKE2B d4dd8bdd980cbb2c8cd813cad44da7a322d75641bb5f4eb986f6be44acf61898e64e43a3206da08b6c68fb1213a95cf5c6bf28bc75356d9abd9711330fa04554 SHA512 ee54d04fa1bb049807e7876baf6a4d12ab8360367bb44ac77c71e53ee8ca078342b4a86f2bc4587838ead27fb8204fea8e739bd582a9e146513ae5d465e59202
|
DIST php-7.1.24.tar.xz 12205112 BLAKE2B d4dd8bdd980cbb2c8cd813cad44da7a322d75641bb5f4eb986f6be44acf61898e64e43a3206da08b6c68fb1213a95cf5c6bf28bc75356d9abd9711330fa04554 SHA512 ee54d04fa1bb049807e7876baf6a4d12ab8360367bb44ac77c71e53ee8ca078342b4a86f2bc4587838ead27fb8204fea8e739bd582a9e146513ae5d465e59202
|
||||||
|
DIST php-7.1.25.tar.xz 12205972 BLAKE2B 3d69cc87d75ee45dc85e5e672ddb6c312fcba12882e227d28e397e1e796e0149588b9519beeb990111315a747a07fa5349ad5f9662c0725b4551478f9e95b51d SHA512 10a75b96d5fa104bc1d5b63f4606d9cfacfc594f7d6ab34f9c5e9e8f209b896516c4121b9cbd323a862724d6dfbd275ef902993cfab619d9a4b9518790b9147c
|
||||||
DIST php-7.2.10.tar.xz 12160864 BLAKE2B f1959a00622c1bd11fa87c61d152c802b307f0b9e89b51ed86b40086cda03eeb6652d47b59df8cc7c9b4e79ab687ae1292b978f453e9f07ac352d209b64c62d8 SHA512 aa90fce17034b2649012d66461626ae74c21ea938b1c71c7eb12419e562c641b432df87a7e900c245ad28df39624cf64a1b2f8ffb123608d94cd35e41f09c0fe
|
DIST php-7.2.10.tar.xz 12160864 BLAKE2B f1959a00622c1bd11fa87c61d152c802b307f0b9e89b51ed86b40086cda03eeb6652d47b59df8cc7c9b4e79ab687ae1292b978f453e9f07ac352d209b64c62d8 SHA512 aa90fce17034b2649012d66461626ae74c21ea938b1c71c7eb12419e562c641b432df87a7e900c245ad28df39624cf64a1b2f8ffb123608d94cd35e41f09c0fe
|
||||||
DIST php-7.2.11.tar.xz 12132268 BLAKE2B 8007f6a8f4236efb796681d25f2066deeba98e6e136def0c323aa13399951d58d7f218b3544b3bd0418dfe220f87a38b6515547c50f65c641bd09a2d440eb4e1 SHA512 0cd8578147d17d612e013dfc22b73977719177058b39c7b61dd0bfdfb8c2441aba78af49f58c824f7e66c89b5ad201c36fafb89ccf1e2d20f19b79d6a8fed7e5
|
DIST php-7.2.11.tar.xz 12132268 BLAKE2B 8007f6a8f4236efb796681d25f2066deeba98e6e136def0c323aa13399951d58d7f218b3544b3bd0418dfe220f87a38b6515547c50f65c641bd09a2d440eb4e1 SHA512 0cd8578147d17d612e013dfc22b73977719177058b39c7b61dd0bfdfb8c2441aba78af49f58c824f7e66c89b5ad201c36fafb89ccf1e2d20f19b79d6a8fed7e5
|
||||||
DIST php-7.2.12.tar.xz 12141472 BLAKE2B 25d55fcbe63aab64c658e9c4ab52b552831d5c03a8887e1c64f0cadbb8b0d9f3c38cd5d15dac89002c328b737ad864fce392baa0891292ee77d1975562a2bc17 SHA512 bbeaed1278d0d2f1ecb2249dab1ebaab1489ef43be0797dac57d8b523d8e5d284166e6cbf52095f5d34eef447fbdeb0c6916caaa5770221a180ec064f4ffcad8
|
DIST php-7.2.12.tar.xz 12141472 BLAKE2B 25d55fcbe63aab64c658e9c4ab52b552831d5c03a8887e1c64f0cadbb8b0d9f3c38cd5d15dac89002c328b737ad864fce392baa0891292ee77d1975562a2bc17 SHA512 bbeaed1278d0d2f1ecb2249dab1ebaab1489ef43be0797dac57d8b523d8e5d284166e6cbf52095f5d34eef447fbdeb0c6916caaa5770221a180ec064f4ffcad8
|
||||||
|
DIST php-7.2.13.tar.xz 12116484 BLAKE2B 00d265c10343e590772a4de103ae885149a56a7c0ef957cb24d5e81f86021231da5e75b655081e9fcba99b83956d55265b6af1d779ee65cebee9a974f936a634 SHA512 9df1d43e9cd701db10281811b328721b85cb90c6c8dae1842b0fd848cb5388328918b3040bbad7634b340550d82b93746ea479ed45f4d8a80e8a316e6324115d
|
||||||
DIST php-7.3.0.tar.xz 11928820 BLAKE2B 36fee652cbbc28bbeb1b2df037b4b05084910d94af86c16150d776b82f91fb85691f9846c51538dbf6f3e64ece26894fe9c7a5f272d2848d41cdf8e1338b9805 SHA512 d991101eb833d3a47833aa930341e75c56f26c4cb0249896728ebe209c6c02af1704fccc3052128d8f9fdffc60dcef0ece38a532697131141946898d8b1abcda
|
DIST php-7.3.0.tar.xz 11928820 BLAKE2B 36fee652cbbc28bbeb1b2df037b4b05084910d94af86c16150d776b82f91fb85691f9846c51538dbf6f3e64ece26894fe9c7a5f272d2848d41cdf8e1338b9805 SHA512 d991101eb833d3a47833aa930341e75c56f26c4cb0249896728ebe209c6c02af1704fccc3052128d8f9fdffc60dcef0ece38a532697131141946898d8b1abcda
|
||||||
|
@ -0,0 +1,154 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
https://github.com/php/php-src/pull/3701
|
||||||
|
https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
|
||||||
|
|
||||||
|
--- a/acinclude.m4
|
||||||
|
+++ b/acinclude.m4
|
||||||
|
@@ -2201,49 +2201,16 @@ dnl
|
||||||
|
dnl Common setup macro for ICU
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([PHP_SETUP_ICU],[
|
||||||
|
- PHP_ARG_WITH(icu-dir,,
|
||||||
|
- [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no)
|
||||||
|
+ PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
|
||||||
|
|
||||||
|
- if test "$PHP_ICU_DIR" = "no"; then
|
||||||
|
- PHP_ICU_DIR=DEFAULT
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- if test "$PHP_ICU_DIR" = "DEFAULT"; then
|
||||||
|
- dnl Try to find icu-config
|
||||||
|
- AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
|
||||||
|
- else
|
||||||
|
- ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- AC_MSG_CHECKING([for location of ICU headers and libraries])
|
||||||
|
-
|
||||||
|
- dnl Trust icu-config to know better what the install prefix is..
|
||||||
|
- icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
|
||||||
|
- if test "$?" != "0" || test -z "$icu_install_prefix"; then
|
||||||
|
- AC_MSG_RESULT([not found])
|
||||||
|
- AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
|
||||||
|
- else
|
||||||
|
- AC_MSG_RESULT([$icu_install_prefix])
|
||||||
|
-
|
||||||
|
- dnl Check ICU version
|
||||||
|
- AC_MSG_CHECKING([for ICU 4.0 or greater])
|
||||||
|
- icu_version_full=`$ICU_CONFIG --version`
|
||||||
|
- ac_IFS=$IFS
|
||||||
|
- IFS="."
|
||||||
|
- set $icu_version_full
|
||||||
|
- IFS=$ac_IFS
|
||||||
|
- icu_version=`expr [$]1 \* 1000 + [$]2`
|
||||||
|
- AC_MSG_RESULT([found $icu_version_full])
|
||||||
|
+ PHP_EVAL_INCLINE($ICU_CFLAGS)
|
||||||
|
+ PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
|
||||||
|
- if test "$icu_version" -lt "4000"; then
|
||||||
|
- AC_MSG_ERROR([ICU version 4.0 or later is required])
|
||||||
|
- fi
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
|
||||||
|
+ ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
|
||||||
|
|
||||||
|
- ICU_VERSION=$icu_version
|
||||||
|
- ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
|
||||||
|
- ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
|
||||||
|
- PHP_EVAL_INCLINE($ICU_INCS)
|
||||||
|
- PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
+ if test "$PKG_CONFIG icu-io --atleast-version=60"; then
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
--- a/ext/intl/config.m4
|
||||||
|
+++ b/ext/intl/config.m4
|
||||||
|
@@ -9,18 +9,10 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
PHP_SETUP_ICU(INTL_SHARED_LIBADD)
|
||||||
|
PHP_SUBST(INTL_SHARED_LIBADD)
|
||||||
|
PHP_REQUIRE_CXX()
|
||||||
|
- if test "$icu_version" -ge "4002"; then
|
||||||
|
- icu_spoof_src=" spoofchecker/spoofchecker_class.c \
|
||||||
|
- spoofchecker/spoofchecker.c\
|
||||||
|
- spoofchecker/spoofchecker_create.c\
|
||||||
|
- spoofchecker/spoofchecker_main.c"
|
||||||
|
- else
|
||||||
|
- icu_spoof_src=""
|
||||||
|
- fi
|
||||||
|
+ INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
PHP_NEW_EXTENSION(intl, php_intl.c \
|
||||||
|
intl_error.c \
|
||||||
|
intl_convert.c \
|
||||||
|
- intl_convertcpp.cpp \
|
||||||
|
collator/collator.c \
|
||||||
|
collator/collator_class.c \
|
||||||
|
collator/collator_sort.c \
|
||||||
|
@@ -32,8 +24,6 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
collator/collator_is_numeric.c \
|
||||||
|
collator/collator_error.c \
|
||||||
|
common/common_error.c \
|
||||||
|
- common/common_enum.cpp \
|
||||||
|
- common/common_date.cpp \
|
||||||
|
converter/converter.c \
|
||||||
|
formatter/formatter.c \
|
||||||
|
formatter/formatter_main.c \
|
||||||
|
@@ -53,17 +43,12 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
dateformat/dateformat_attr.c \
|
||||||
|
dateformat/dateformat_data.c \
|
||||||
|
dateformat/dateformat_format.c \
|
||||||
|
- dateformat/dateformat_format_object.cpp \
|
||||||
|
dateformat/dateformat_parse.c \
|
||||||
|
- dateformat/dateformat_create.cpp \
|
||||||
|
- dateformat/dateformat_attrcpp.cpp \
|
||||||
|
- dateformat/dateformat_helpers.cpp \
|
||||||
|
msgformat/msgformat.c \
|
||||||
|
msgformat/msgformat_attr.c \
|
||||||
|
msgformat/msgformat_class.c \
|
||||||
|
msgformat/msgformat_data.c \
|
||||||
|
msgformat/msgformat_format.c \
|
||||||
|
- msgformat/msgformat_helpers.cpp \
|
||||||
|
msgformat/msgformat_parse.c \
|
||||||
|
grapheme/grapheme_string.c \
|
||||||
|
grapheme/grapheme_util.c \
|
||||||
|
@@ -73,6 +58,20 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
transliterator/transliterator.c \
|
||||||
|
transliterator/transliterator_class.c \
|
||||||
|
transliterator/transliterator_methods.c \
|
||||||
|
+ idn/idn.c \
|
||||||
|
+ spoofchecker/spoofchecker_class.c \
|
||||||
|
+ spoofchecker/spoofchecker.c\
|
||||||
|
+ spoofchecker/spoofchecker_create.c\
|
||||||
|
+ spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
|
||||||
|
+
|
||||||
|
+ PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
|
||||||
|
+ common/common_enum.cpp \
|
||||||
|
+ common/common_date.cpp \
|
||||||
|
+ dateformat/dateformat_format_object.cpp \
|
||||||
|
+ dateformat/dateformat_create.cpp \
|
||||||
|
+ dateformat/dateformat_attrcpp.cpp \
|
||||||
|
+ dateformat/dateformat_helpers.cpp \
|
||||||
|
+ msgformat/msgformat_helpers.cpp \
|
||||||
|
timezone/timezone_class.cpp \
|
||||||
|
timezone/timezone_methods.cpp \
|
||||||
|
calendar/calendar_class.cpp \
|
||||||
|
@@ -83,9 +82,15 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
breakiterator/breakiterator_methods.cpp \
|
||||||
|
breakiterator/rulebasedbreakiterator_methods.cpp \
|
||||||
|
breakiterator/codepointiterator_internal.cpp \
|
||||||
|
- breakiterator/codepointiterator_methods.cpp \
|
||||||
|
- idn/idn.c \
|
||||||
|
- $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings)
|
||||||
|
+ breakiterator/codepointiterator_methods.cpp"
|
||||||
|
+
|
||||||
|
+ PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
+ if test "$ext_shared" = "no"; then
|
||||||
|
+ PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
|
||||||
|
+ else
|
||||||
|
+ PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/collator)
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/converter)
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/common)
|
@ -0,0 +1,88 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/45a05f38410d4a67c8c83c09906e2cfb42fc6e4c
|
||||||
|
https://github.com/php/php-src/commit/534684d1042978f3c21caf9b665a7aca27f3f325
|
||||||
|
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/datefmt.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/strenum.h>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
@@ -45,6 +46,7 @@ extern "C" {
|
||||||
|
|
||||||
|
#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
|
||||||
|
#define HAS_MESSAGE_PATTERN 1
|
||||||
|
+#define HAS_MISALLOCATE_MEMORY_BUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
U_NAMESPACE_BEGIN
|
||||||
|
@@ -345,6 +347,26 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
|
||||||
|
return; /* already done */
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef HAS_MISALLOCATE_MEMORY_BUG
|
||||||
|
+ /* There is a bug in ICU which prevents MessageFormatter::getFormats()
|
||||||
|
+ to handle more than 10 formats correctly. The enumerator could be
|
||||||
|
+ used to walk through the present formatters using getFormat(), which
|
||||||
|
+ however seems to provide just a readonly access. This workaround
|
||||||
|
+ prevents crash when there are > 10 formats but doesn't set any error.
|
||||||
|
+ As a result, only DateFormatters with > 10 subformats are affected.
|
||||||
|
+ This workaround should be ifdef'd out, when the bug has been fixed
|
||||||
|
+ in ICU. */
|
||||||
|
+ icu::StringEnumeration* fnames = mf->getFormatNames(err.code);
|
||||||
|
+ if (!fnames || U_FAILURE(err.code)) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ count = fnames->count(err.code);
|
||||||
|
+ delete fnames;
|
||||||
|
+ if (count > 10) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
formats = mf->getFormats(count);
|
||||||
|
|
||||||
|
if (formats == NULL) {
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/intl/tests/bug74484_MessageFormatter.phpt
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+--TEST--
|
||||||
|
+Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named placeholder
|
||||||
|
+--SKIPIF--
|
||||||
|
+<?php
|
||||||
|
+if (!extension_loaded('intl'))
|
||||||
|
+ die('skip intl extension not enabled');
|
||||||
|
+if (version_compare(INTL_ICU_VERSION, '4.8') < 0)
|
||||||
|
+ die('skip for ICU 4.8+');
|
||||||
|
+?>
|
||||||
|
+--FILE--
|
||||||
|
+<?php
|
||||||
|
+$text = "{a} {b} {c} {d} {e} {f} {g} {h} {i} {j} {k} {l}";
|
||||||
|
+
|
||||||
|
+$vars = array(
|
||||||
|
+ 'a' => 1,
|
||||||
|
+ 'b' => 2,
|
||||||
|
+ 'c' => 3,
|
||||||
|
+ 'd' => 4,
|
||||||
|
+ 'e' => 5,
|
||||||
|
+ 'f' => 6,
|
||||||
|
+ 'g' => 7,
|
||||||
|
+ 'h' => 8,
|
||||||
|
+ 'i' => 9,
|
||||||
|
+ 'j' => 10,
|
||||||
|
+ 'k' => 11,
|
||||||
|
+ 'l' => 12
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+var_dump(MessageFormatter::formatMessage('en_US', $text, $vars));
|
||||||
|
+
|
||||||
|
+?>
|
||||||
|
+==DONE==
|
||||||
|
+--EXPECT--
|
||||||
|
+string(26) "1 2 3 4 5 6 7 8 9 10 11 12"
|
||||||
|
+==DONE==
|
@ -0,0 +1,365 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
|
||||||
|
https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
@@ -38,6 +38,7 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *BreakIterator_ce_ptr;
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_BREAKITERATOR_POINTER
|
||||||
|
typedef void BreakIterator;
|
||||||
|
+#else
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
@@ -32,6 +32,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
|
||||||
|
U_CFUNC PHP_METHOD(BreakIterator, __construct)
|
||||||
|
{
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
@@ -31,6 +31,8 @@ typedef union {
|
||||||
|
|
||||||
|
using namespace PHP;
|
||||||
|
|
||||||
|
+using icu::UCharCharacterIterator;
|
||||||
|
+
|
||||||
|
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
|
||||||
|
|
||||||
|
CodePointBreakIterator::CodePointBreakIterator()
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
@@ -18,8 +18,11 @@
|
||||||
|
#define CODEPOINTITERATOR_INTERNAL_H
|
||||||
|
|
||||||
|
#include <unicode/brkiter.h>
|
||||||
|
+#include <unicode/unistr.h>
|
||||||
|
|
||||||
|
-using U_ICU_NAMESPACE::BreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::CharacterIterator;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
|
||||||
|
namespace PHP {
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
@@ -25,6 +25,9 @@ extern "C" {
|
||||||
|
|
||||||
|
#include "../intl_convertcpp.h"
|
||||||
|
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
|
||||||
|
return (RuleBasedBreakIterator*)bio->biter;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/calendar/calendar_class.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.cpp
|
||||||
|
@@ -34,6 +34,9 @@ extern "C" {
|
||||||
|
#include <assert.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *Calendar_ce_ptr;
|
||||||
|
zend_class_entry *GregorianCalendar_ce_ptr;
|
||||||
|
--- a/ext/intl/calendar/calendar_class.h
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_CALENDAR_POINTER
|
||||||
|
typedef void Calendar;
|
||||||
|
+#else
|
||||||
|
+using icu::Calendar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
@@ -40,6 +40,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "../common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlCalendar, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
@@ -23,6 +23,8 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
#include <unicode/gregocal.h>
|
||||||
|
+#include <unicode/ustring.h>
|
||||||
|
+
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
#define USE_TIMEZONE_POINTER 1
|
||||||
|
@@ -32,6 +34,11 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+
|
||||||
|
static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
|
||||||
|
return (GregorianCalendar*)co->ucal;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/common/common_date.cpp
|
||||||
|
+++ b/ext/intl/common/common_date.cpp
|
||||||
|
@@ -25,6 +25,9 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
#ifndef INFINITY
|
||||||
|
#define INFINITY (DBL_MAX+DBL_MAX)
|
||||||
|
#endif
|
||||||
|
--- a/ext/intl/common/common_date.h
|
||||||
|
+++ b/ext/intl/common/common_date.h
|
||||||
|
@@ -28,6 +28,8 @@ U_CDECL_END
|
||||||
|
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+
|
||||||
|
U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func TSRMLS_DC);
|
||||||
|
U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
|
||||||
|
intl_error *err, const char *func TSRMLS_DC);
|
||||||
|
--- a/ext/intl/common/common_enum.h
|
||||||
|
+++ b/ext/intl/common/common_enum.h
|
||||||
|
@@ -69,6 +69,7 @@ U_CFUNC void zoi_with_current_get_current_data(zend_object_iterator *iter, zval
|
||||||
|
U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter TSRMLS_DC);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
+using icu::StringEnumeration;
|
||||||
|
U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object TSRMLS_DC);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--- a/ext/intl/converter/converter.c
|
||||||
|
+++ b/ext/intl/converter/converter.c
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
+#include <unicode/utf16.h>
|
||||||
|
#include <unicode/ucnv.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
|
||||||
|
--- a/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
@@ -33,6 +33,12 @@ extern "C" {
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+using icu::SimpleDateFormat;
|
||||||
|
+
|
||||||
|
static const DateFormat::EStyle valid_styles[] = {
|
||||||
|
DateFormat::kNone,
|
||||||
|
DateFormat::kFull,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
@@ -28,6 +28,8 @@ extern "C" {
|
||||||
|
#include "../calendar/calendar_class.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
@@ -22,11 +22,16 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/datefmt.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/grapheme/grapheme_string.c
|
||||||
|
+++ b/ext/intl/grapheme/grapheme_string.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "grapheme_util.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
#include <unicode/ucol.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
#include <unicode/ubrk.h>
|
||||||
|
@@ -860,10 +861,10 @@ PHP_FUNCTION(grapheme_extract)
|
||||||
|
pstr = str + start;
|
||||||
|
|
||||||
|
/* just in case pstr points in the middle of a character, move forward to the start of the next char */
|
||||||
|
- if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
unsigned char *str_end = str + str_len;
|
||||||
|
|
||||||
|
- while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
pstr++;
|
||||||
|
if ( pstr >= str_end ) {
|
||||||
|
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
|
||||||
|
--- a/ext/intl/intl_convertcpp.h
|
||||||
|
+++ b/ext/intl/intl_convertcpp.h
|
||||||
|
@@ -25,6 +25,8 @@
|
||||||
|
|
||||||
|
#include <unicode/unistr.h>
|
||||||
|
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
int intl_stringFromChar(UnicodeString &ret, char *str, int32_t str_len, UErrorCode *status);
|
||||||
|
|
||||||
|
int intl_charFromString(const UnicodeString &from, char **res, int *res_len, UErrorCode *status);
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -76,6 +76,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
|
||||||
|
#endif
|
||||||
|
U_NAMESPACE_END
|
||||||
|
|
||||||
|
+using icu::Formattable;
|
||||||
|
+using icu::Format;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::MessageFormat;
|
||||||
|
+#ifdef HAS_MESSAGE_PATTERN
|
||||||
|
+using icu::MessagePattern;
|
||||||
|
+#endif
|
||||||
|
+using icu::MessageFormatAdapter;
|
||||||
|
+using icu::FieldPosition;
|
||||||
|
+
|
||||||
|
U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
|
||||||
|
{
|
||||||
|
int32_t fmt_count = 0;
|
||||||
|
@@ -227,15 +237,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
UnicodeString typeString = mp.getSubstring(type_part);
|
||||||
|
/* This is all based on the rules in the docs for MessageFormat
|
||||||
|
* @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
|
||||||
|
- if (typeString == "number") {
|
||||||
|
+#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
|
||||||
|
+ if (typeString == ASCII_LITERAL("number")) {
|
||||||
|
MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
|
||||||
|
if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
|
||||||
|
UnicodeString styleString = mp.getSubstring(style_part);
|
||||||
|
- if (styleString == "integer") {
|
||||||
|
+ if (styleString == ASCII_LITERAL("integer")) {
|
||||||
|
type = Formattable::kInt64;
|
||||||
|
- } else if (styleString == "currency") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("currency")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
- } else if (styleString == "percent") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("percent")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
} else { /* some style invalid/unknown to us */
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
@@ -243,12 +254,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
} else { // if missing style, part, make it a double
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
- } else if ((typeString == "date") || (typeString == "time")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
|
||||||
|
type = Formattable::kDate;
|
||||||
|
- } else if ((typeString == "spellout") || (typeString == "ordinal")
|
||||||
|
- || (typeString == "duration")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
|
||||||
|
+ || (typeString == ASCII_LITERAL("duration"))) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
+#undef ASCII_LITERAL
|
||||||
|
} else {
|
||||||
|
/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
|
||||||
|
* UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
|
||||||
|
--- a/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
+++ b/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "normalizer_class.h"
|
||||||
|
#include "normalizer_normalize.h"
|
||||||
|
#include "intl_convert.h"
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
/* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
|
||||||
|
* Normalize a string. }}} */
|
||||||
|
--- a/ext/intl/timezone/timezone_class.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.cpp
|
||||||
|
@@ -37,6 +37,8 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
U_CDECL_BEGIN
|
||||||
|
zend_class_entry *TimeZone_ce_ptr = NULL;
|
||||||
|
--- a/ext/intl/timezone/timezone_class.h
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.h
|
||||||
|
@@ -29,6 +29,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_TIMEZONE_POINTER
|
||||||
|
typedef void TimeZone;
|
||||||
|
+#else
|
||||||
|
+using icu::TimeZone;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
@@ -23,6 +23,7 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
+#include <unicode/calendar.h>
|
||||||
|
#include "intl_convertcpp.h"
|
||||||
|
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
@@ -37,6 +38,9 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
@ -0,0 +1,159 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
https://github.com/php/php-src/pull/3701
|
||||||
|
https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
|
||||||
|
|
||||||
|
--- a/acinclude.m4
|
||||||
|
+++ b/acinclude.m4
|
||||||
|
@@ -2205,49 +2205,16 @@ dnl
|
||||||
|
dnl Common setup macro for ICU
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([PHP_SETUP_ICU],[
|
||||||
|
- PHP_ARG_WITH(icu-dir,,
|
||||||
|
- [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no)
|
||||||
|
+ PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
|
||||||
|
|
||||||
|
- if test "$PHP_ICU_DIR" = "no"; then
|
||||||
|
- PHP_ICU_DIR=DEFAULT
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- if test "$PHP_ICU_DIR" = "DEFAULT"; then
|
||||||
|
- dnl Try to find icu-config
|
||||||
|
- AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
|
||||||
|
- else
|
||||||
|
- ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- AC_MSG_CHECKING([for location of ICU headers and libraries])
|
||||||
|
-
|
||||||
|
- dnl Trust icu-config to know better what the install prefix is..
|
||||||
|
- icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
|
||||||
|
- if test "$?" != "0" || test -z "$icu_install_prefix"; then
|
||||||
|
- AC_MSG_RESULT([not found])
|
||||||
|
- AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
|
||||||
|
- else
|
||||||
|
- AC_MSG_RESULT([$icu_install_prefix])
|
||||||
|
-
|
||||||
|
- dnl Check ICU version
|
||||||
|
- AC_MSG_CHECKING([for ICU 4.0 or greater])
|
||||||
|
- icu_version_full=`$ICU_CONFIG --version`
|
||||||
|
- ac_IFS=$IFS
|
||||||
|
- IFS="."
|
||||||
|
- set $icu_version_full
|
||||||
|
- IFS=$ac_IFS
|
||||||
|
- icu_version=`expr [$]1 \* 1000 + [$]2`
|
||||||
|
- AC_MSG_RESULT([found $icu_version_full])
|
||||||
|
+ PHP_EVAL_INCLINE($ICU_CFLAGS)
|
||||||
|
+ PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
|
||||||
|
- if test "$icu_version" -lt "4000"; then
|
||||||
|
- AC_MSG_ERROR([ICU version 4.0 or later is required])
|
||||||
|
- fi
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
|
||||||
|
+ ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
|
||||||
|
|
||||||
|
- ICU_VERSION=$icu_version
|
||||||
|
- ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
|
||||||
|
- ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
|
||||||
|
- PHP_EVAL_INCLINE($ICU_INCS)
|
||||||
|
- PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
+ if test "$PKG_CONFIG icu-io --atleast-version=60"; then
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
--- a/ext/intl/config.m4
|
||||||
|
+++ b/ext/intl/config.m4
|
||||||
|
@@ -9,18 +9,10 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
PHP_SETUP_ICU(INTL_SHARED_LIBADD)
|
||||||
|
PHP_SUBST(INTL_SHARED_LIBADD)
|
||||||
|
PHP_REQUIRE_CXX()
|
||||||
|
- if test "$icu_version" -ge "4002"; then
|
||||||
|
- icu_spoof_src=" spoofchecker/spoofchecker_class.c \
|
||||||
|
- spoofchecker/spoofchecker.c\
|
||||||
|
- spoofchecker/spoofchecker_create.c\
|
||||||
|
- spoofchecker/spoofchecker_main.c"
|
||||||
|
- else
|
||||||
|
- icu_spoof_src=""
|
||||||
|
- fi
|
||||||
|
+ INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
PHP_NEW_EXTENSION(intl, php_intl.c \
|
||||||
|
intl_error.c \
|
||||||
|
intl_convert.c \
|
||||||
|
- intl_convertcpp.cpp \
|
||||||
|
collator/collator.c \
|
||||||
|
collator/collator_class.c \
|
||||||
|
collator/collator_sort.c \
|
||||||
|
@@ -32,8 +24,6 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
collator/collator_is_numeric.c \
|
||||||
|
collator/collator_error.c \
|
||||||
|
common/common_error.c \
|
||||||
|
- common/common_enum.cpp \
|
||||||
|
- common/common_date.cpp \
|
||||||
|
converter/converter.c \
|
||||||
|
formatter/formatter.c \
|
||||||
|
formatter/formatter_main.c \
|
||||||
|
@@ -53,17 +43,12 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
dateformat/dateformat_attr.c \
|
||||||
|
dateformat/dateformat_data.c \
|
||||||
|
dateformat/dateformat_format.c \
|
||||||
|
- dateformat/dateformat_format_object.cpp \
|
||||||
|
dateformat/dateformat_parse.c \
|
||||||
|
- dateformat/dateformat_create.cpp \
|
||||||
|
- dateformat/dateformat_attrcpp.cpp \
|
||||||
|
- dateformat/dateformat_helpers.cpp \
|
||||||
|
msgformat/msgformat.c \
|
||||||
|
msgformat/msgformat_attr.c \
|
||||||
|
msgformat/msgformat_class.c \
|
||||||
|
msgformat/msgformat_data.c \
|
||||||
|
msgformat/msgformat_format.c \
|
||||||
|
- msgformat/msgformat_helpers.cpp \
|
||||||
|
msgformat/msgformat_parse.c \
|
||||||
|
grapheme/grapheme_string.c \
|
||||||
|
grapheme/grapheme_util.c \
|
||||||
|
@@ -73,6 +58,21 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
transliterator/transliterator.c \
|
||||||
|
transliterator/transliterator_class.c \
|
||||||
|
transliterator/transliterator_methods.c \
|
||||||
|
+ uchar/uchar.c \
|
||||||
|
+ idn/idn.c \
|
||||||
|
+ spoofchecker/spoofchecker_class.c \
|
||||||
|
+ spoofchecker/spoofchecker.c\
|
||||||
|
+ spoofchecker/spoofchecker_create.c\
|
||||||
|
+ spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
|
||||||
|
+
|
||||||
|
+ PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
|
||||||
|
+ common/common_enum.cpp \
|
||||||
|
+ common/common_date.cpp \
|
||||||
|
+ dateformat/dateformat_format_object.cpp \
|
||||||
|
+ dateformat/dateformat_create.cpp \
|
||||||
|
+ dateformat/dateformat_attrcpp.cpp \
|
||||||
|
+ dateformat/dateformat_helpers.cpp \
|
||||||
|
+ msgformat/msgformat_helpers.cpp \
|
||||||
|
timezone/timezone_class.cpp \
|
||||||
|
timezone/timezone_methods.cpp \
|
||||||
|
calendar/calendar_class.cpp \
|
||||||
|
@@ -83,10 +83,15 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
breakiterator/breakiterator_methods.cpp \
|
||||||
|
breakiterator/rulebasedbreakiterator_methods.cpp \
|
||||||
|
breakiterator/codepointiterator_internal.cpp \
|
||||||
|
- breakiterator/codepointiterator_methods.cpp \
|
||||||
|
- uchar/uchar.c \
|
||||||
|
- idn/idn.c \
|
||||||
|
- $icu_spoof_src, $ext_shared,,$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,cxx)
|
||||||
|
+ breakiterator/codepointiterator_methods.cpp"
|
||||||
|
+
|
||||||
|
+ PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
+ if test "$ext_shared" = "no"; then
|
||||||
|
+ PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
|
||||||
|
+ else
|
||||||
|
+ PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/collator)
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/converter)
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/common)
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,91 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/45a05f38410d4a67c8c83c09906e2cfb42fc6e4c
|
||||||
|
https://github.com/php/php-src/commit/534684d1042978f3c21caf9b665a7aca27f3f325
|
||||||
|
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/datefmt.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/strenum.h>
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
@@ -45,6 +46,7 @@ extern "C" {
|
||||||
|
|
||||||
|
#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
|
||||||
|
#define HAS_MESSAGE_PATTERN 1
|
||||||
|
+#define HAS_MISALLOCATE_MEMORY_BUG 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
U_NAMESPACE_BEGIN
|
||||||
|
@@ -345,6 +347,26 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
|
||||||
|
return; /* already done */
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef HAS_MISALLOCATE_MEMORY_BUG
|
||||||
|
+ /* There is a bug in ICU which prevents MessageFormatter::getFormats()
|
||||||
|
+ to handle more than 10 formats correctly. The enumerator could be
|
||||||
|
+ used to walk through the present formatters using getFormat(), which
|
||||||
|
+ however seems to provide just a readonly access. This workaround
|
||||||
|
+ prevents crash when there are > 10 formats but doesn't set any error.
|
||||||
|
+ As a result, only DateFormatters with > 10 subformats are affected.
|
||||||
|
+ This workaround should be ifdef'd out, when the bug has been fixed
|
||||||
|
+ in ICU. */
|
||||||
|
+ icu::StringEnumeration* fnames = mf->getFormatNames(err.code);
|
||||||
|
+ if (!fnames || U_FAILURE(err.code)) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ count = fnames->count(err.code);
|
||||||
|
+ delete fnames;
|
||||||
|
+ if (count > 10) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
formats = mf->getFormats(count);
|
||||||
|
|
||||||
|
if (formats == NULL) {
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/intl/tests/bug74484_MessageFormatter.phpt
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+--TEST--
|
||||||
|
+Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named placeholder
|
||||||
|
+--SKIPIF--
|
||||||
|
+<?php
|
||||||
|
+if (!extension_loaded('intl'))
|
||||||
|
+ die('skip intl extension not enabled');
|
||||||
|
+if (version_compare(INTL_ICU_VERSION, '4.8') < 0)
|
||||||
|
+ die('skip for ICU 4.8+');
|
||||||
|
+?>
|
||||||
|
+--FILE--
|
||||||
|
+<?php
|
||||||
|
+$text = "{a} {b} {c} {d} {e} {f} {g} {h} {i} {j} {k} {l}";
|
||||||
|
+
|
||||||
|
+$vars = array(
|
||||||
|
+ 'a' => 1,
|
||||||
|
+ 'b' => 2,
|
||||||
|
+ 'c' => 3,
|
||||||
|
+ 'd' => 4,
|
||||||
|
+ 'e' => 5,
|
||||||
|
+ 'f' => 6,
|
||||||
|
+ 'g' => 7,
|
||||||
|
+ 'h' => 8,
|
||||||
|
+ 'i' => 9,
|
||||||
|
+ 'j' => 10,
|
||||||
|
+ 'k' => 11,
|
||||||
|
+ 'l' => 12
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+var_dump(MessageFormatter::formatMessage('en_US', $text, $vars));
|
||||||
|
+
|
||||||
|
+?>
|
||||||
|
+==DONE==
|
||||||
|
+--EXPECT--
|
||||||
|
+string(26) "1 2 3 4 5 6 7 8 9 10 11 12"
|
||||||
|
+==DONE==
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,369 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
|
||||||
|
https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
@@ -38,6 +38,7 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *BreakIterator_ce_ptr;
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_BREAKITERATOR_POINTER
|
||||||
|
typedef void BreakIterator;
|
||||||
|
+#else
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
@@ -32,6 +32,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
|
||||||
|
U_CFUNC PHP_METHOD(BreakIterator, __construct)
|
||||||
|
{
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
@@ -33,6 +33,8 @@ typedef union {
|
||||||
|
|
||||||
|
using namespace PHP;
|
||||||
|
|
||||||
|
+using icu::UCharCharacterIterator;
|
||||||
|
+
|
||||||
|
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
|
||||||
|
|
||||||
|
CodePointBreakIterator::CodePointBreakIterator()
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
@@ -18,8 +18,11 @@
|
||||||
|
#define CODEPOINTITERATOR_INTERNAL_H
|
||||||
|
|
||||||
|
#include <unicode/brkiter.h>
|
||||||
|
+#include <unicode/unistr.h>
|
||||||
|
|
||||||
|
-using U_ICU_NAMESPACE::BreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::CharacterIterator;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
|
||||||
|
namespace PHP {
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
@@ -26,6 +26,9 @@ extern "C" {
|
||||||
|
#include "../intl_convertcpp.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
|
||||||
|
return (RuleBasedBreakIterator*)bio->biter;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/calendar/calendar_class.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.cpp
|
||||||
|
@@ -34,6 +34,9 @@ extern "C" {
|
||||||
|
#include <assert.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *Calendar_ce_ptr;
|
||||||
|
zend_class_entry *GregorianCalendar_ce_ptr;
|
||||||
|
--- a/ext/intl/calendar/calendar_class.h
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_CALENDAR_POINTER
|
||||||
|
typedef void Calendar;
|
||||||
|
+#else
|
||||||
|
+using icu::Calendar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
@@ -40,6 +40,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "../common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlCalendar, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
@@ -23,6 +23,8 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
#include <unicode/gregocal.h>
|
||||||
|
+#include <unicode/ustring.h>
|
||||||
|
+
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
@@ -34,6 +36,11 @@ extern "C" {
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+
|
||||||
|
static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
|
||||||
|
return (GregorianCalendar*)co->ucal;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/common/common_date.cpp
|
||||||
|
+++ b/ext/intl/common/common_date.cpp
|
||||||
|
@@ -25,6 +25,9 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
#ifndef INFINITY
|
||||||
|
#define INFINITY (DBL_MAX+DBL_MAX)
|
||||||
|
#endif
|
||||||
|
--- a/ext/intl/common/common_date.h
|
||||||
|
+++ b/ext/intl/common/common_date.h
|
||||||
|
@@ -28,6 +28,8 @@ U_CDECL_END
|
||||||
|
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+
|
||||||
|
U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
|
||||||
|
U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
|
||||||
|
intl_error *err, const char *func);
|
||||||
|
--- a/ext/intl/common/common_enum.h
|
||||||
|
+++ b/ext/intl/common/common_enum.h
|
||||||
|
@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
|
||||||
|
U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
+using icu::StringEnumeration;
|
||||||
|
U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--- a/ext/intl/converter/converter.c
|
||||||
|
+++ b/ext/intl/converter/converter.c
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
+#include <unicode/utf16.h>
|
||||||
|
#include <unicode/ucnv.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
|
||||||
|
--- a/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
@@ -33,6 +33,12 @@ extern "C" {
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+using icu::SimpleDateFormat;
|
||||||
|
+
|
||||||
|
static const DateFormat::EStyle valid_styles[] = {
|
||||||
|
DateFormat::kNone,
|
||||||
|
DateFormat::kFull,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
@@ -28,6 +28,8 @@ extern "C" {
|
||||||
|
#include "../calendar/calendar_class.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
@@ -22,11 +22,16 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/datefmt.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/grapheme/grapheme_string.c
|
||||||
|
+++ b/ext/intl/grapheme/grapheme_string.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "grapheme_util.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
#include <unicode/ucol.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
#include <unicode/ubrk.h>
|
||||||
|
@@ -831,10 +832,10 @@ PHP_FUNCTION(grapheme_extract)
|
||||||
|
pstr = str + start;
|
||||||
|
|
||||||
|
/* just in case pstr points in the middle of a character, move forward to the start of the next char */
|
||||||
|
- if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
- char *str_end = str + str_len;
|
||||||
|
+ if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ unsigned char *str_end = str + str_len;
|
||||||
|
|
||||||
|
- while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
pstr++;
|
||||||
|
if ( pstr >= str_end ) {
|
||||||
|
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
|
||||||
|
--- a/ext/intl/intl_convertcpp.h
|
||||||
|
+++ b/ext/intl/intl_convertcpp.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
#include <unicode/unistr.h>
|
||||||
|
#include <zend_types.h>
|
||||||
|
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
|
||||||
|
|
||||||
|
zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -76,6 +76,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
|
||||||
|
#endif
|
||||||
|
U_NAMESPACE_END
|
||||||
|
|
||||||
|
+using icu::Formattable;
|
||||||
|
+using icu::Format;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::MessageFormat;
|
||||||
|
+#ifdef HAS_MESSAGE_PATTERN
|
||||||
|
+using icu::MessagePattern;
|
||||||
|
+#endif
|
||||||
|
+using icu::MessageFormatAdapter;
|
||||||
|
+using icu::FieldPosition;
|
||||||
|
+
|
||||||
|
U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
|
||||||
|
{
|
||||||
|
int32_t fmt_count = 0;
|
||||||
|
@@ -227,15 +237,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
UnicodeString typeString = mp.getSubstring(type_part);
|
||||||
|
/* This is all based on the rules in the docs for MessageFormat
|
||||||
|
* @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
|
||||||
|
- if (typeString == "number") {
|
||||||
|
+#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
|
||||||
|
+ if (typeString == ASCII_LITERAL("number")) {
|
||||||
|
MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
|
||||||
|
if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
|
||||||
|
UnicodeString styleString = mp.getSubstring(style_part);
|
||||||
|
- if (styleString == "integer") {
|
||||||
|
+ if (styleString == ASCII_LITERAL("integer")) {
|
||||||
|
type = Formattable::kInt64;
|
||||||
|
- } else if (styleString == "currency") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("currency")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
- } else if (styleString == "percent") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("percent")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
} else { /* some style invalid/unknown to us */
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
@@ -243,12 +254,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
} else { // if missing style, part, make it a double
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
- } else if ((typeString == "date") || (typeString == "time")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
|
||||||
|
type = Formattable::kDate;
|
||||||
|
- } else if ((typeString == "spellout") || (typeString == "ordinal")
|
||||||
|
- || (typeString == "duration")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
|
||||||
|
+ || (typeString == ASCII_LITERAL("duration"))) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
+#undef ASCII_LITERAL
|
||||||
|
} else {
|
||||||
|
/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
|
||||||
|
* UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
|
||||||
|
--- a/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
+++ b/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "normalizer_class.h"
|
||||||
|
#include "normalizer_normalize.h"
|
||||||
|
#include "intl_convert.h"
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
/* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
|
||||||
|
* Normalize a string. }}} */
|
||||||
|
--- a/ext/intl/timezone/timezone_class.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.cpp
|
||||||
|
@@ -37,6 +37,8 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
U_CDECL_BEGIN
|
||||||
|
zend_class_entry *TimeZone_ce_ptr = NULL;
|
||||||
|
--- a/ext/intl/timezone/timezone_class.h
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.h
|
||||||
|
@@ -29,6 +29,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_TIMEZONE_POINTER
|
||||||
|
typedef void TimeZone;
|
||||||
|
+#else
|
||||||
|
+using icu::TimeZone;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
@@ -23,6 +23,7 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
+#include <unicode/calendar.h>
|
||||||
|
#include "intl_convertcpp.h"
|
||||||
|
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
@@ -37,6 +38,9 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,121 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
https://github.com/php/php-src/pull/3701
|
||||||
|
https://github.com/php/php-src/commit/2bd299f7318492fd7e5cafffa562d76ba60e69d4
|
||||||
|
|
||||||
|
--- a/acinclude.m4
|
||||||
|
+++ b/acinclude.m4
|
||||||
|
@@ -2205,52 +2205,16 @@ dnl
|
||||||
|
dnl Common setup macro for ICU
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([PHP_SETUP_ICU],[
|
||||||
|
- PHP_ARG_WITH(icu-dir,,
|
||||||
|
- [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no)
|
||||||
|
+ PKG_CHECK_MODULES([ICU], [icu-io >= 50.1])
|
||||||
|
|
||||||
|
- if test "$PHP_ICU_DIR" = "no"; then
|
||||||
|
- PHP_ICU_DIR=DEFAULT
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- if test "$PHP_ICU_DIR" = "DEFAULT"; then
|
||||||
|
- dnl Try to find icu-config
|
||||||
|
- AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
|
||||||
|
- else
|
||||||
|
- ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- AC_MSG_CHECKING([for location of ICU headers and libraries])
|
||||||
|
-
|
||||||
|
- dnl Trust icu-config to know better what the install prefix is..
|
||||||
|
- icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
|
||||||
|
- if test "$?" != "0" || test -z "$icu_install_prefix"; then
|
||||||
|
- AC_MSG_RESULT([not found])
|
||||||
|
- AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
|
||||||
|
- else
|
||||||
|
- AC_MSG_RESULT([$icu_install_prefix])
|
||||||
|
-
|
||||||
|
- dnl Check ICU version
|
||||||
|
- AC_MSG_CHECKING([for ICU 4.0 or greater])
|
||||||
|
- icu_version_full=`$ICU_CONFIG --version`
|
||||||
|
- ac_IFS=$IFS
|
||||||
|
- IFS="."
|
||||||
|
- set $icu_version_full
|
||||||
|
- IFS=$ac_IFS
|
||||||
|
- icu_version=`expr [$]1 \* 1000 + [$]2`
|
||||||
|
- AC_MSG_RESULT([found $icu_version_full])
|
||||||
|
-
|
||||||
|
- if test "$icu_version" -lt "4000"; then
|
||||||
|
- AC_MSG_ERROR([ICU version 4.0 or later is required])
|
||||||
|
- fi
|
||||||
|
+ PHP_EVAL_INCLINE($ICU_CFLAGS)
|
||||||
|
+ PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
|
||||||
|
- ICU_VERSION=$icu_version
|
||||||
|
- ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
|
||||||
|
- ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
|
||||||
|
- PHP_EVAL_INCLINE($ICU_INCS)
|
||||||
|
- PHP_EVAL_LIBLINE($ICU_LIBS, $1)
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
|
||||||
|
+ ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit"
|
||||||
|
|
||||||
|
- ICU_CXXFLAGS=`$ICU_CONFIG --cxxflags`
|
||||||
|
- ICU_CXXFLAGS="$ICU_CXXFLAGS -DU_USING_ICU_NAMESPACE=1"
|
||||||
|
+ if test "$PKG_CONFIG icu-io --atleast-version=60"; then
|
||||||
|
+ ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
--- a/ext/intl/config.m4
|
||||||
|
+++ b/ext/intl/config.m4
|
||||||
|
@@ -9,15 +9,7 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
PHP_SETUP_ICU(INTL_SHARED_LIBADD)
|
||||||
|
PHP_SUBST(INTL_SHARED_LIBADD)
|
||||||
|
PHP_REQUIRE_CXX()
|
||||||
|
- INTL_COMMON_FLAGS="$ICU_INCS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
- if test "$icu_version" -ge "4002"; then
|
||||||
|
- icu_spoof_src=" spoofchecker/spoofchecker_class.c \
|
||||||
|
- spoofchecker/spoofchecker.c\
|
||||||
|
- spoofchecker/spoofchecker_create.c\
|
||||||
|
- spoofchecker/spoofchecker_main.c"
|
||||||
|
- else
|
||||||
|
- icu_spoof_src=""
|
||||||
|
- fi
|
||||||
|
+ INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
PHP_NEW_EXTENSION(intl, php_intl.c \
|
||||||
|
intl_error.c \
|
||||||
|
intl_convert.c \
|
||||||
|
@@ -68,9 +60,12 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
transliterator/transliterator_methods.c \
|
||||||
|
uchar/uchar.c \
|
||||||
|
idn/idn.c \
|
||||||
|
- $icu_spoof_src, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
|
||||||
|
+ spoofchecker/spoofchecker_class.c \
|
||||||
|
+ spoofchecker/spoofchecker.c\
|
||||||
|
+ spoofchecker/spoofchecker_create.c\
|
||||||
|
+ spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx)
|
||||||
|
|
||||||
|
- PHP_INTL_CXX_SOURCES="intl_convertcpp.cpp \
|
||||||
|
+ PHP_INTL_CPP_SOURCES="intl_convertcpp.cpp \
|
||||||
|
common/common_enum.cpp \
|
||||||
|
common/common_date.cpp \
|
||||||
|
dateformat/dateformat_format_object.cpp \
|
||||||
|
@@ -89,11 +84,12 @@ if test "$PHP_INTL" != "no"; then
|
||||||
|
breakiterator/rulebasedbreakiterator_methods.cpp \
|
||||||
|
breakiterator/codepointiterator_internal.cpp \
|
||||||
|
breakiterator/codepointiterator_methods.cpp"
|
||||||
|
- PHP_INTL_CXX_FLAGS="$INTL_COMMON_FLAGS $ICU_CXXFLAGS"
|
||||||
|
+
|
||||||
|
+ PHP_INTL_CPP_FLAGS="$ICU_CXXFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
|
||||||
|
if test "$ext_shared" = "no"; then
|
||||||
|
- PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CXX_SOURCES, $PHP_INTL_CXX_FLAGS)
|
||||||
|
+ PHP_ADD_SOURCES(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS)
|
||||||
|
else
|
||||||
|
- PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CXX_SOURCES, $PHP_INTL_CXX_FLAGS, shared_objects_intl, yes)
|
||||||
|
+ PHP_ADD_SOURCES_X(PHP_EXT_DIR(intl), $PHP_INTL_CPP_SOURCES, $PHP_INTL_CPP_FLAGS, shared_objects_intl, yes)
|
||||||
|
fi
|
||||||
|
|
||||||
|
PHP_ADD_BUILD_DIR($ext_builddir/collator)
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,379 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
|
||||||
|
https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
@@ -38,6 +38,7 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *BreakIterator_ce_ptr;
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_BREAKITERATOR_POINTER
|
||||||
|
typedef void BreakIterator;
|
||||||
|
+#else
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
@@ -32,6 +32,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
|
||||||
|
U_CFUNC PHP_METHOD(BreakIterator, __construct)
|
||||||
|
{
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
@@ -33,6 +33,8 @@ typedef union {
|
||||||
|
|
||||||
|
using namespace PHP;
|
||||||
|
|
||||||
|
+using icu::UCharCharacterIterator;
|
||||||
|
+
|
||||||
|
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
|
||||||
|
|
||||||
|
CodePointBreakIterator::CodePointBreakIterator()
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
@@ -18,8 +18,11 @@
|
||||||
|
#define CODEPOINTITERATOR_INTERNAL_H
|
||||||
|
|
||||||
|
#include <unicode/brkiter.h>
|
||||||
|
+#include <unicode/unistr.h>
|
||||||
|
|
||||||
|
-using U_ICU_NAMESPACE::BreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::CharacterIterator;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
|
||||||
|
namespace PHP {
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
@@ -26,6 +26,9 @@ extern "C" {
|
||||||
|
#include "../intl_convertcpp.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
|
||||||
|
return (RuleBasedBreakIterator*)bio->biter;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/calendar/calendar_class.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.cpp
|
||||||
|
@@ -34,6 +34,9 @@ extern "C" {
|
||||||
|
#include <assert.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *Calendar_ce_ptr;
|
||||||
|
zend_class_entry *GregorianCalendar_ce_ptr;
|
||||||
|
--- a/ext/intl/calendar/calendar_class.h
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_CALENDAR_POINTER
|
||||||
|
typedef void Calendar;
|
||||||
|
+#else
|
||||||
|
+using icu::Calendar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
@@ -40,6 +40,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "../common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlCalendar, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
@@ -23,6 +23,8 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
#include <unicode/gregocal.h>
|
||||||
|
+#include <unicode/ustring.h>
|
||||||
|
+
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
@@ -34,6 +36,11 @@ extern "C" {
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+
|
||||||
|
static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
|
||||||
|
return (GregorianCalendar*)co->ucal;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/common/common_date.cpp
|
||||||
|
+++ b/ext/intl/common/common_date.cpp
|
||||||
|
@@ -25,6 +25,9 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
#ifndef INFINITY
|
||||||
|
#define INFINITY (DBL_MAX+DBL_MAX)
|
||||||
|
#endif
|
||||||
|
--- a/ext/intl/common/common_date.h
|
||||||
|
+++ b/ext/intl/common/common_date.h
|
||||||
|
@@ -28,6 +28,8 @@ U_CDECL_END
|
||||||
|
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+
|
||||||
|
U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
|
||||||
|
U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
|
||||||
|
intl_error *err, const char *func);
|
||||||
|
--- a/ext/intl/common/common_enum.h
|
||||||
|
+++ b/ext/intl/common/common_enum.h
|
||||||
|
@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
|
||||||
|
U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
+using icu::StringEnumeration;
|
||||||
|
U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--- a/ext/intl/converter/converter.c
|
||||||
|
+++ b/ext/intl/converter/converter.c
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
+#include <unicode/utf16.h>
|
||||||
|
#include <unicode/ucnv.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
|
||||||
|
--- a/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
@@ -33,6 +33,12 @@ extern "C" {
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+using icu::SimpleDateFormat;
|
||||||
|
+
|
||||||
|
static const DateFormat::EStyle valid_styles[] = {
|
||||||
|
DateFormat::kNone,
|
||||||
|
DateFormat::kFull,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
@@ -28,6 +28,8 @@ extern "C" {
|
||||||
|
#include "../calendar/calendar_class.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
@@ -22,11 +22,16 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/datefmt.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/grapheme/grapheme_string.c
|
||||||
|
+++ b/ext/intl/grapheme/grapheme_string.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "grapheme_util.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
#include <unicode/ucol.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
#include <unicode/ubrk.h>
|
||||||
|
@@ -835,10 +836,10 @@ PHP_FUNCTION(grapheme_extract)
|
||||||
|
pstr = str + start;
|
||||||
|
|
||||||
|
/* just in case pstr points in the middle of a character, move forward to the start of the next char */
|
||||||
|
- if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
- char *str_end = str + str_len;
|
||||||
|
+ if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ unsigned char *str_end = str + str_len;
|
||||||
|
|
||||||
|
- while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
pstr++;
|
||||||
|
if ( pstr >= str_end ) {
|
||||||
|
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
|
||||||
|
--- a/ext/intl/intl_convertcpp.h
|
||||||
|
+++ b/ext/intl/intl_convertcpp.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
#include <unicode/unistr.h>
|
||||||
|
#include <zend_types.h>
|
||||||
|
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
|
||||||
|
|
||||||
|
zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -78,6 +78,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
|
||||||
|
#endif
|
||||||
|
U_NAMESPACE_END
|
||||||
|
|
||||||
|
+using icu::Formattable;
|
||||||
|
+using icu::Format;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::MessageFormat;
|
||||||
|
+#ifdef HAS_MESSAGE_PATTERN
|
||||||
|
+using icu::MessagePattern;
|
||||||
|
+#endif
|
||||||
|
+using icu::MessageFormatAdapter;
|
||||||
|
+using icu::FieldPosition;
|
||||||
|
+
|
||||||
|
U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
|
||||||
|
{
|
||||||
|
int32_t fmt_count = 0;
|
||||||
|
@@ -229,15 +239,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
UnicodeString typeString = mp.getSubstring(type_part);
|
||||||
|
/* This is all based on the rules in the docs for MessageFormat
|
||||||
|
* @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
|
||||||
|
- if (typeString == "number") {
|
||||||
|
+#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
|
||||||
|
+ if (typeString == ASCII_LITERAL("number")) {
|
||||||
|
MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
|
||||||
|
if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
|
||||||
|
UnicodeString styleString = mp.getSubstring(style_part);
|
||||||
|
- if (styleString == "integer") {
|
||||||
|
+ if (styleString == ASCII_LITERAL("integer")) {
|
||||||
|
type = Formattable::kInt64;
|
||||||
|
- } else if (styleString == "currency") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("currency")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
- } else if (styleString == "percent") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("percent")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
} else { /* some style invalid/unknown to us */
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
@@ -245,12 +256,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
} else { // if missing style, part, make it a double
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
- } else if ((typeString == "date") || (typeString == "time")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
|
||||||
|
type = Formattable::kDate;
|
||||||
|
- } else if ((typeString == "spellout") || (typeString == "ordinal")
|
||||||
|
- || (typeString == "duration")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
|
||||||
|
+ || (typeString == ASCII_LITERAL("duration"))) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
+#undef ASCII_LITERAL
|
||||||
|
} else {
|
||||||
|
/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
|
||||||
|
* UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
|
||||||
|
--- a/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
+++ b/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "normalizer_class.h"
|
||||||
|
#include "normalizer_normalize.h"
|
||||||
|
#include "intl_convert.h"
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
/* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
|
||||||
|
* Normalize a string. }}} */
|
||||||
|
--- a/ext/intl/timezone/timezone_class.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.cpp
|
||||||
|
@@ -37,6 +37,8 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
U_CDECL_BEGIN
|
||||||
|
zend_class_entry *TimeZone_ce_ptr = NULL;
|
||||||
|
--- a/ext/intl/timezone/timezone_class.h
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.h
|
||||||
|
@@ -29,6 +29,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_TIMEZONE_POINTER
|
||||||
|
typedef void TimeZone;
|
||||||
|
+#else
|
||||||
|
+using icu::TimeZone;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
@@ -23,6 +23,7 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
+#include <unicode/calendar.h>
|
||||||
|
#include "intl_convertcpp.h"
|
||||||
|
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
@@ -37,6 +38,9 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/uchar/uchar.c
|
||||||
|
+++ b/ext/intl/uchar/uchar.c
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
#include "intl_convert.h"
|
||||||
|
|
||||||
|
#include <unicode/uchar.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
#define IC_METHOD(mname) PHP_METHOD(IntlChar, mname)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,379 @@
|
|||||||
|
Based on the following upstream commits:
|
||||||
|
|
||||||
|
https://github.com/php/php-src/commit/8d35a423838eb462cd39ee535c5d003073cc5f22
|
||||||
|
https://github.com/php/php-src/commit/d8200e48857aeaf09f7127751efc5632ef7660a7
|
||||||
|
https://github.com/php/php-src/commit/9a8e7b571896f39f83cb000fdb7c466b6d328d52
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.cpp
|
||||||
|
@@ -38,6 +38,7 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *BreakIterator_ce_ptr;
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_BREAKITERATOR_POINTER
|
||||||
|
typedef void BreakIterator;
|
||||||
|
+#else
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/breakiterator_methods.cpp
|
||||||
|
@@ -32,6 +32,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
|
||||||
|
using PHP::CodePointBreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
|
||||||
|
U_CFUNC PHP_METHOD(BreakIterator, __construct)
|
||||||
|
{
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.cpp
|
||||||
|
@@ -33,6 +33,8 @@ typedef union {
|
||||||
|
|
||||||
|
using namespace PHP;
|
||||||
|
|
||||||
|
+using icu::UCharCharacterIterator;
|
||||||
|
+
|
||||||
|
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CodePointBreakIterator);
|
||||||
|
|
||||||
|
CodePointBreakIterator::CodePointBreakIterator()
|
||||||
|
--- a/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
+++ b/ext/intl/breakiterator/codepointiterator_internal.h
|
||||||
|
@@ -18,8 +18,11 @@
|
||||||
|
#define CODEPOINTITERATOR_INTERNAL_H
|
||||||
|
|
||||||
|
#include <unicode/brkiter.h>
|
||||||
|
+#include <unicode/unistr.h>
|
||||||
|
|
||||||
|
-using U_ICU_NAMESPACE::BreakIterator;
|
||||||
|
+using icu::BreakIterator;
|
||||||
|
+using icu::CharacterIterator;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
|
||||||
|
namespace PHP {
|
||||||
|
|
||||||
|
--- a/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
+++ b/ext/intl/breakiterator/rulebasedbreakiterator_methods.cpp
|
||||||
|
@@ -26,6 +26,9 @@ extern "C" {
|
||||||
|
#include "../intl_convertcpp.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
|
||||||
|
+using icu::RuleBasedBreakIterator;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
static inline RuleBasedBreakIterator *fetch_rbbi(BreakIterator_object *bio) {
|
||||||
|
return (RuleBasedBreakIterator*)bio->biter;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/calendar/calendar_class.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.cpp
|
||||||
|
@@ -34,6 +34,9 @@ extern "C" {
|
||||||
|
#include <assert.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
zend_class_entry *Calendar_ce_ptr;
|
||||||
|
zend_class_entry *GregorianCalendar_ce_ptr;
|
||||||
|
--- a/ext/intl/calendar/calendar_class.h
|
||||||
|
+++ b/ext/intl/calendar/calendar_class.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_CALENDAR_POINTER
|
||||||
|
typedef void Calendar;
|
||||||
|
+#else
|
||||||
|
+using icu::Calendar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/calendar_methods.cpp
|
||||||
|
@@ -40,6 +40,8 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "../common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlCalendar, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
+++ b/ext/intl/calendar/gregoriancalendar_methods.cpp
|
||||||
|
@@ -23,6 +23,8 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
#include <unicode/gregocal.h>
|
||||||
|
+#include <unicode/ustring.h>
|
||||||
|
+
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
#include "../intl_common.h"
|
||||||
|
@@ -34,6 +36,11 @@ extern "C" {
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+
|
||||||
|
static inline GregorianCalendar *fetch_greg(Calendar_object *co) {
|
||||||
|
return (GregorianCalendar*)co->ucal;
|
||||||
|
}
|
||||||
|
--- a/ext/intl/common/common_date.cpp
|
||||||
|
+++ b/ext/intl/common/common_date.cpp
|
||||||
|
@@ -27,6 +27,9 @@ extern "C" {
|
||||||
|
|
||||||
|
#include "zend_portability.h"
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
/* {{{ timezone_convert_datetimezone
|
||||||
|
* The timezone in DateTime and DateTimeZone is not unified. */
|
||||||
|
U_CFUNC TimeZone *timezone_convert_datetimezone(int type,
|
||||||
|
--- a/ext/intl/common/common_date.h
|
||||||
|
+++ b/ext/intl/common/common_date.h
|
||||||
|
@@ -28,6 +28,8 @@ U_CDECL_END
|
||||||
|
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
|
||||||
|
+using icu::TimeZone;
|
||||||
|
+
|
||||||
|
U_CFUNC TimeZone *timezone_convert_datetimezone(int type, void *object, int is_datetime, intl_error *outside_error, const char *func);
|
||||||
|
U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
|
||||||
|
intl_error *err, const char *func);
|
||||||
|
--- a/ext/intl/common/common_enum.h
|
||||||
|
+++ b/ext/intl/common/common_enum.h
|
||||||
|
@@ -75,6 +75,7 @@ U_CFUNC zval *zoi_with_current_get_current_data(zend_object_iterator *iter);
|
||||||
|
U_CFUNC void zoi_with_current_invalidate_current(zend_object_iterator *iter);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
+using icu::StringEnumeration;
|
||||||
|
U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--- a/ext/intl/converter/converter.c
|
||||||
|
+++ b/ext/intl/converter/converter.c
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
#include "zend_exceptions.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
+#include <unicode/utf16.h>
|
||||||
|
#include <unicode/ucnv.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
|
||||||
|
--- a/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_format_object.cpp
|
||||||
|
@@ -33,6 +33,12 @@ extern "C" {
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+using icu::StringPiece;
|
||||||
|
+using icu::SimpleDateFormat;
|
||||||
|
+
|
||||||
|
static const DateFormat::EStyle valid_styles[] = {
|
||||||
|
DateFormat::kNone,
|
||||||
|
DateFormat::kFull,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.cpp
|
||||||
|
@@ -28,6 +28,8 @@ extern "C" {
|
||||||
|
#include "../calendar/calendar_class.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::GregorianCalendar;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
+++ b/ext/intl/dateformat/dateformat_helpers.h
|
||||||
|
@@ -22,11 +22,16 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <unicode/calendar.h>
|
||||||
|
+#include <unicode/datefmt.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "../php_intl.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+
|
||||||
|
int datefmt_process_calendar_arg(zval* calendar_zv,
|
||||||
|
Locale const& locale,
|
||||||
|
const char *func_name,
|
||||||
|
--- a/ext/intl/grapheme/grapheme_string.c
|
||||||
|
+++ b/ext/intl/grapheme/grapheme_string.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "grapheme_util.h"
|
||||||
|
|
||||||
|
#include <unicode/utypes.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
#include <unicode/ucol.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
#include <unicode/ubrk.h>
|
||||||
|
@@ -834,10 +835,10 @@ PHP_FUNCTION(grapheme_extract)
|
||||||
|
pstr = str + start;
|
||||||
|
|
||||||
|
/* just in case pstr points in the middle of a character, move forward to the start of the next char */
|
||||||
|
- if ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
- char *str_end = str + str_len;
|
||||||
|
+ if ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ unsigned char *str_end = str + str_len;
|
||||||
|
|
||||||
|
- while ( !UTF8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
+ while ( !U8_IS_SINGLE(*pstr) && !U8_IS_LEAD(*pstr) ) {
|
||||||
|
pstr++;
|
||||||
|
if ( pstr >= str_end ) {
|
||||||
|
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
|
||||||
|
--- a/ext/intl/intl_convertcpp.h
|
||||||
|
+++ b/ext/intl/intl_convertcpp.h
|
||||||
|
@@ -26,6 +26,8 @@
|
||||||
|
#include <unicode/unistr.h>
|
||||||
|
#include <zend_types.h>
|
||||||
|
|
||||||
|
+using icu::UnicodeString;
|
||||||
|
+
|
||||||
|
int intl_stringFromChar(UnicodeString &ret, char *str, size_t str_len, UErrorCode *status);
|
||||||
|
|
||||||
|
zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status);
|
||||||
|
--- a/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
+++ b/ext/intl/msgformat/msgformat_helpers.cpp
|
||||||
|
@@ -78,6 +78,16 @@ MessageFormatAdapter::getMessagePattern(MessageFormat* m) {
|
||||||
|
#endif
|
||||||
|
U_NAMESPACE_END
|
||||||
|
|
||||||
|
+using icu::Formattable;
|
||||||
|
+using icu::Format;
|
||||||
|
+using icu::DateFormat;
|
||||||
|
+using icu::MessageFormat;
|
||||||
|
+#ifdef HAS_MESSAGE_PATTERN
|
||||||
|
+using icu::MessagePattern;
|
||||||
|
+#endif
|
||||||
|
+using icu::MessageFormatAdapter;
|
||||||
|
+using icu::FieldPosition;
|
||||||
|
+
|
||||||
|
U_CFUNC int32_t umsg_format_arg_count(UMessageFormat *fmt)
|
||||||
|
{
|
||||||
|
int32_t fmt_count = 0;
|
||||||
|
@@ -229,15 +239,16 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
UnicodeString typeString = mp.getSubstring(type_part);
|
||||||
|
/* This is all based on the rules in the docs for MessageFormat
|
||||||
|
* @see http://icu-project.org/apiref/icu4c/classMessageFormat.html */
|
||||||
|
- if (typeString == "number") {
|
||||||
|
+#define ASCII_LITERAL(s) UNICODE_STRING(s, sizeof(s)-1)
|
||||||
|
+ if (typeString == ASCII_LITERAL("number")) {
|
||||||
|
MessagePattern::Part style_part = mp.getPart(i + 1); /* Not advancing i */
|
||||||
|
if (style_part.getType() == UMSGPAT_PART_TYPE_ARG_STYLE) {
|
||||||
|
UnicodeString styleString = mp.getSubstring(style_part);
|
||||||
|
- if (styleString == "integer") {
|
||||||
|
+ if (styleString == ASCII_LITERAL("integer")) {
|
||||||
|
type = Formattable::kInt64;
|
||||||
|
- } else if (styleString == "currency") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("currency")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
- } else if (styleString == "percent") {
|
||||||
|
+ } else if (styleString == ASCII_LITERAL("percent")) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
} else { /* some style invalid/unknown to us */
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
@@ -245,12 +256,13 @@ static HashTable *umsg_parse_format(MessageFormatter_object *mfo,
|
||||||
|
} else { // if missing style, part, make it a double
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
- } else if ((typeString == "date") || (typeString == "time")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("date")) || (typeString == ASCII_LITERAL("time"))) {
|
||||||
|
type = Formattable::kDate;
|
||||||
|
- } else if ((typeString == "spellout") || (typeString == "ordinal")
|
||||||
|
- || (typeString == "duration")) {
|
||||||
|
+ } else if ((typeString == ASCII_LITERAL("spellout")) || (typeString == ASCII_LITERAL("ordinal"))
|
||||||
|
+ || (typeString == ASCII_LITERAL("duration"))) {
|
||||||
|
type = Formattable::kDouble;
|
||||||
|
}
|
||||||
|
+#undef ASCII_LITERAL
|
||||||
|
} else {
|
||||||
|
/* If there's no UMSGPAT_PART_TYPE_ARG_TYPE right after a
|
||||||
|
* UMSGPAT_ARG_TYPE_SIMPLE argument, then the pattern
|
||||||
|
--- a/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
+++ b/ext/intl/normalizer/normalizer_normalize.c
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "normalizer_class.h"
|
||||||
|
#include "normalizer_normalize.h"
|
||||||
|
#include "intl_convert.h"
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
/* {{{ proto string Normalizer::normalize( string $input [, string $form = FORM_C] )
|
||||||
|
* Normalize a string. }}} */
|
||||||
|
--- a/ext/intl/timezone/timezone_class.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.cpp
|
||||||
|
@@ -37,6 +37,8 @@ extern "C" {
|
||||||
|
#include <ext/date/php_date.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
/* {{{ Global variables */
|
||||||
|
U_CDECL_BEGIN
|
||||||
|
zend_class_entry *TimeZone_ce_ptr = NULL;
|
||||||
|
--- a/ext/intl/timezone/timezone_class.h
|
||||||
|
+++ b/ext/intl/timezone/timezone_class.h
|
||||||
|
@@ -29,6 +29,8 @@
|
||||||
|
|
||||||
|
#ifndef USE_TIMEZONE_POINTER
|
||||||
|
typedef void TimeZone;
|
||||||
|
+#else
|
||||||
|
+using icu::TimeZone;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--- a/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
+++ b/ext/intl/timezone/timezone_methods.cpp
|
||||||
|
@@ -23,6 +23,7 @@
|
||||||
|
#include <unicode/locid.h>
|
||||||
|
#include <unicode/timezone.h>
|
||||||
|
#include <unicode/ustring.h>
|
||||||
|
+#include <unicode/calendar.h>
|
||||||
|
#include "intl_convertcpp.h"
|
||||||
|
|
||||||
|
#include "../common/common_date.h"
|
||||||
|
@@ -37,6 +38,9 @@ extern "C" {
|
||||||
|
}
|
||||||
|
#include "common/common_enum.h"
|
||||||
|
|
||||||
|
+using icu::Locale;
|
||||||
|
+using icu::Calendar;
|
||||||
|
+
|
||||||
|
U_CFUNC PHP_METHOD(IntlTimeZone, __construct)
|
||||||
|
{
|
||||||
|
zend_throw_exception( NULL,
|
||||||
|
--- a/ext/intl/uchar/uchar.c
|
||||||
|
+++ b/ext/intl/uchar/uchar.c
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
#include "intl_convert.h"
|
||||||
|
|
||||||
|
#include <unicode/uchar.h>
|
||||||
|
+#include <unicode/utf8.h>
|
||||||
|
|
||||||
|
#define IC_METHOD(mname) PHP_METHOD(IntlChar, mname)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
@ -0,0 +1,785 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI="7"
|
||||||
|
|
||||||
|
inherit autotools flag-o-matic systemd
|
||||||
|
|
||||||
|
DESCRIPTION="The PHP language runtime engine"
|
||||||
|
HOMEPAGE="https://secure.php.net/"
|
||||||
|
SRC_URI="https://php.net/distributions/${P}.tar.xz
|
||||||
|
https://salsa.debian.org/php-team/php/raw/8149a436/debian/patches/0055-Use-OpenSSL-1.1-compatibility-patch-when-built-with-.patch?inline=false -> php-5.6-openssl-1.1-compatibility.patch"
|
||||||
|
|
||||||
|
LICENSE="PHP-3.01
|
||||||
|
BSD
|
||||||
|
Zend-2.0
|
||||||
|
bcmath? ( LGPL-2.1+ )
|
||||||
|
fpm? ( BSD-2 )
|
||||||
|
gd? ( gd )
|
||||||
|
unicode? ( BSD-2 LGPL-2.1 )"
|
||||||
|
|
||||||
|
SLOT="$(ver_cut 1-2)"
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||||
|
|
||||||
|
# We can build the following SAPIs in the given order
|
||||||
|
SAPIS="embed cli cgi fpm apache2"
|
||||||
|
|
||||||
|
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||||
|
IUSE="${IUSE}
|
||||||
|
${SAPIS/cli/+cli}
|
||||||
|
threads"
|
||||||
|
|
||||||
|
IUSE="${IUSE} acl bcmath berkdb bzip2 calendar cdb cjk
|
||||||
|
coverage crypt +ctype curl debug
|
||||||
|
enchant exif +fileinfo +filter firebird
|
||||||
|
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||||
|
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
|
||||||
|
mhash mssql mysql libmysqlclient mysqli nls
|
||||||
|
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||||
|
readline recode selinux +session sharedmem
|
||||||
|
+simplexml snmp soap sockets spell sqlite ssl
|
||||||
|
sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
|
||||||
|
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
|
||||||
|
|
||||||
|
# The supported (that is, autodetected) versions of BDB are listed in
|
||||||
|
# the ./configure script. Other versions *work*, but we need to stick to
|
||||||
|
# the ones that can be detected to avoid a repeat of bug #564824.
|
||||||
|
COMMON_DEPEND="
|
||||||
|
>=app-eselect/eselect-php-0.9.1[apache2?,fpm?]
|
||||||
|
>=dev-libs/libpcre-8.32[unicode]
|
||||||
|
fpm? ( acl? ( sys-apps/acl ) )
|
||||||
|
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||||
|
<www-servers/apache-2.4[threads=] ) )
|
||||||
|
berkdb? ( || ( sys-libs/db:5.3
|
||||||
|
sys-libs/db:5.1
|
||||||
|
sys-libs/db:4.8
|
||||||
|
sys-libs/db:4.7
|
||||||
|
sys-libs/db:4.6
|
||||||
|
sys-libs/db:4.5 ) )
|
||||||
|
bzip2? ( app-arch/bzip2:0= )
|
||||||
|
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||||
|
cjk? ( !gd? (
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0=
|
||||||
|
sys-libs/zlib:0=
|
||||||
|
) )
|
||||||
|
coverage? ( dev-util/lcov )
|
||||||
|
crypt? ( >=dev-libs/libmcrypt-2.4 )
|
||||||
|
curl? ( >=net-misc/curl-7.10.5 )
|
||||||
|
enchant? ( app-text/enchant )
|
||||||
|
exif? ( !gd? (
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0=
|
||||||
|
sys-libs/zlib:0=
|
||||||
|
) )
|
||||||
|
firebird? ( dev-db/firebird )
|
||||||
|
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
|
||||||
|
gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
|
||||||
|
gmp? ( dev-libs/gmp:0= )
|
||||||
|
iconv? ( virtual/libiconv )
|
||||||
|
imap? ( virtual/imap-c-client[kerberos=,ssl=] )
|
||||||
|
intl? ( dev-libs/icu:= )
|
||||||
|
iodbc? ( dev-db/libiodbc )
|
||||||
|
kerberos? ( virtual/krb5 )
|
||||||
|
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||||
|
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||||
|
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||||
|
mssql? ( dev-db/freetds[mssql] )
|
||||||
|
libmysqlclient? (
|
||||||
|
mysql? ( virtual/libmysqlclient:= )
|
||||||
|
mysqli? ( virtual/libmysqlclient:= )
|
||||||
|
)
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||||
|
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||||
|
postgres? ( dev-db/postgresql:* )
|
||||||
|
qdbm? ( dev-db/qdbm )
|
||||||
|
readline? ( sys-libs/readline:0= )
|
||||||
|
recode? ( app-text/recode )
|
||||||
|
sharedmem? ( dev-libs/mm )
|
||||||
|
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||||
|
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
spell? ( >=app-text/aspell-0.50 )
|
||||||
|
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||||
|
ssl? (
|
||||||
|
!libressl? ( dev-libs/openssl:0= )
|
||||||
|
libressl? ( dev-libs/libressl:0= )
|
||||||
|
)
|
||||||
|
sybase-ct? ( dev-db/freetds )
|
||||||
|
tidy? ( app-text/htmltidy )
|
||||||
|
truetype? (
|
||||||
|
=media-libs/freetype-2*
|
||||||
|
>=media-libs/t1lib-5.0.0
|
||||||
|
!gd? (
|
||||||
|
virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
|
||||||
|
)
|
||||||
|
unicode? ( dev-libs/oniguruma:= )
|
||||||
|
vpx? ( media-libs/libvpx:0= )
|
||||||
|
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||||
|
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xpm? (
|
||||||
|
x11-libs/libXpm
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0= sys-libs/zlib:0=
|
||||||
|
)
|
||||||
|
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||||
|
zip? ( sys-libs/zlib:0= )
|
||||||
|
zlib? ( sys-libs/zlib:0= )
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPEND="${COMMON_DEPEND}
|
||||||
|
virtual/mta
|
||||||
|
fpm? (
|
||||||
|
selinux? ( sec-policy/selinux-phpfpm )
|
||||||
|
systemd? ( sys-apps/systemd ) )"
|
||||||
|
|
||||||
|
DEPEND="${COMMON_DEPEND}
|
||||||
|
app-arch/xz-utils
|
||||||
|
>=sys-devel/bison-3.0.1
|
||||||
|
sys-devel/flex
|
||||||
|
>=sys-devel/m4-1.4.3
|
||||||
|
>=sys-devel/libtool-1.5.18"
|
||||||
|
|
||||||
|
# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
|
||||||
|
REQUIRED_USE="
|
||||||
|
|| ( cli cgi fpm apache2 embed )
|
||||||
|
cli? ( ^^ ( readline libedit ) )
|
||||||
|
truetype? ( gd zlib )
|
||||||
|
vpx? ( gd zlib )
|
||||||
|
cjk? ( gd zlib )
|
||||||
|
exif? ( gd zlib )
|
||||||
|
xpm? ( gd zlib )
|
||||||
|
gd? ( zlib )
|
||||||
|
simplexml? ( xml )
|
||||||
|
soap? ( xml )
|
||||||
|
wddx? ( xml )
|
||||||
|
xmlrpc? ( || ( xml iconv ) )
|
||||||
|
xmlreader? ( xml )
|
||||||
|
xslt? ( xml )
|
||||||
|
ldap-sasl? ( ldap )
|
||||||
|
mhash? ( hash )
|
||||||
|
phar? ( hash )
|
||||||
|
recode? ( !imap !mysql !mysqli !libmysqlclient )
|
||||||
|
libmysqlclient? ( || (
|
||||||
|
mysql
|
||||||
|
mysqli
|
||||||
|
pdo
|
||||||
|
) )
|
||||||
|
|
||||||
|
qdbm? ( !gdbm )
|
||||||
|
readline? ( !libedit )
|
||||||
|
sharedmem? ( !threads )
|
||||||
|
"
|
||||||
|
|
||||||
|
PHP_MV="$(ver_cut 1)"
|
||||||
|
|
||||||
|
php_install_ini() {
|
||||||
|
local phpsapi="${1}"
|
||||||
|
|
||||||
|
# work out where we are installing the ini file
|
||||||
|
php_set_ini_dir "${phpsapi}"
|
||||||
|
|
||||||
|
# Always install the production INI file, bug 611214.
|
||||||
|
local phpinisrc="php.ini-production-${phpsapi}"
|
||||||
|
cp php.ini-production "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# default to /tmp for save_path, bug #282768
|
||||||
|
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the extension dir
|
||||||
|
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \
|
||||||
|
-i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the include path to point to where we want to find PEAR packages
|
||||||
|
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
newins "${phpinisrc}" php.ini
|
||||||
|
|
||||||
|
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
elog
|
||||||
|
|
||||||
|
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||||
|
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||||
|
|
||||||
|
if use opcache; then
|
||||||
|
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||||
|
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \
|
||||||
|
"${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||||
|
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
|
||||||
|
"${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SAPI-specific handling
|
||||||
|
if [[ "${sapi}" == "fpm" ]] ; then
|
||||||
|
einfo "Installing FPM config file php-fpm.conf"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
doins sapi/fpm/php-fpm.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
dodoc php.ini-{development,production}
|
||||||
|
}
|
||||||
|
|
||||||
|
php_set_ini_dir() {
|
||||||
|
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||||
|
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||||
|
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
eapply "${FILESDIR}/php-${SLOT}-no-bison-warnings.patch"
|
||||||
|
eapply "${FILESDIR}/5.6-mbstring-oniguruma-6.8.patch"
|
||||||
|
eapply "${DISTDIR}/php-5.6-openssl-1.1-compatibility.patch"
|
||||||
|
eapply "${FILESDIR}/php-5.6-intl-detect-icu-via-pkg-config.patch"
|
||||||
|
eapply "${FILESDIR}/php-5.6-intl-use-icu-namespace.patch"
|
||||||
|
eapply "${FILESDIR}/php-5.6-intl-icu-memory-corruption.patch"
|
||||||
|
eapply "${FILESDIR}/php-freetype-2.9.1.patch"
|
||||||
|
|
||||||
|
# Change PHP branding
|
||||||
|
# Get the alpha/beta/rc version
|
||||||
|
sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
|
||||||
|
-i configure.in || die "Unable to change PHP branding"
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# Prevent PHP from activating the Apache config,
|
||||||
|
# as we will do that ourselves
|
||||||
|
sed -i \
|
||||||
|
-e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||||
|
-e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||||
|
configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4 \
|
||||||
|
|| die
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
eapply_user
|
||||||
|
|
||||||
|
# Force rebuilding aclocal.m4
|
||||||
|
rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
|
||||||
|
|
||||||
|
mv configure.in configure.ac || die
|
||||||
|
|
||||||
|
eautoreconf
|
||||||
|
|
||||||
|
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||||
|
# http://bugs.php.net/bug.php?id=48795, bug #343481
|
||||||
|
sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||||
|
|
||||||
|
# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
|
||||||
|
# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
|
||||||
|
local our_conf=(
|
||||||
|
--prefix="${PHP_DESTDIR}"
|
||||||
|
--mandir="${PHP_DESTDIR}/man"
|
||||||
|
--infodir="${PHP_DESTDIR}/info"
|
||||||
|
--libdir="${PHP_DESTDIR}/lib"
|
||||||
|
--with-libdir="$(get_libdir)"
|
||||||
|
--localstatedir="${EPREFIX}/var"
|
||||||
|
--without-pear
|
||||||
|
$(use_enable threads maintainer-zts)
|
||||||
|
)
|
||||||
|
|
||||||
|
our_conf+=(
|
||||||
|
$(use_enable bcmath bcmath)
|
||||||
|
$(use_with bzip2 bz2 "${EPREFIX}/usr")
|
||||||
|
$(use_enable calendar calendar)
|
||||||
|
$(use_enable coverage gcov)
|
||||||
|
$(use_enable ctype ctype)
|
||||||
|
$(use_with curl curl "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml dom)
|
||||||
|
$(use_with enchant enchant "${EPREFIX}/usr")
|
||||||
|
$(use_enable exif exif)
|
||||||
|
$(use_enable fileinfo fileinfo)
|
||||||
|
$(use_enable filter filter)
|
||||||
|
$(use_enable ftp ftp)
|
||||||
|
$(use_with nls gettext "${EPREFIX}/usr")
|
||||||
|
$(use_with gmp gmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable hash hash)
|
||||||
|
$(use_with mhash mhash "${EPREFIX}/usr")
|
||||||
|
$(use_with iconv iconv \
|
||||||
|
$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
|
||||||
|
$(use_enable intl intl)
|
||||||
|
$(use_enable ipv6 ipv6)
|
||||||
|
$(use_enable json json)
|
||||||
|
$(use_with kerberos kerberos "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml libxml)
|
||||||
|
$(use_with xml libxml-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable unicode mbstring)
|
||||||
|
$(use_with crypt mcrypt "${EPREFIX}/usr")
|
||||||
|
$(use_with mssql mssql "${EPREFIX}/usr")
|
||||||
|
$(use_with unicode onig "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable pcntl pcntl)
|
||||||
|
$(use_enable phar phar)
|
||||||
|
$(use_enable pdo pdo)
|
||||||
|
$(use_enable opcache opcache)
|
||||||
|
$(use_with postgres pgsql "${EPREFIX}/usr")
|
||||||
|
$(use_enable posix posix)
|
||||||
|
$(use_with spell pspell "${EPREFIX}/usr")
|
||||||
|
$(use_with recode recode "${EPREFIX}/usr")
|
||||||
|
$(use_enable simplexml simplexml)
|
||||||
|
$(use_enable sharedmem shmop)
|
||||||
|
$(use_with snmp snmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable soap soap)
|
||||||
|
$(use_enable sockets sockets)
|
||||||
|
$(use_with sqlite sqlite3 "${EPREFIX}/usr")
|
||||||
|
$(use_with sybase-ct sybase-ct "${EPREFIX}/usr")
|
||||||
|
$(use_enable sysvipc sysvmsg)
|
||||||
|
$(use_enable sysvipc sysvsem)
|
||||||
|
$(use_enable sysvipc sysvshm)
|
||||||
|
$(use_with tidy tidy "${EPREFIX}/usr")
|
||||||
|
$(use_enable tokenizer tokenizer)
|
||||||
|
$(use_enable wddx wddx)
|
||||||
|
$(use_enable xml xml)
|
||||||
|
$(use_enable xmlreader xmlreader)
|
||||||
|
$(use_enable xmlwriter xmlwriter)
|
||||||
|
$(use_with xmlrpc xmlrpc)
|
||||||
|
$(use_with xslt xsl "${EPREFIX}/usr")
|
||||||
|
$(use_enable zip zip)
|
||||||
|
$(use_with zlib zlib "${EPREFIX}/usr")
|
||||||
|
$(use_enable debug debug)
|
||||||
|
)
|
||||||
|
|
||||||
|
# DBA support
|
||||||
|
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||||
|
|| use qdbm ; then
|
||||||
|
our_conf+=( "--enable-dba${shared}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DBA drivers support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with cdb cdb)
|
||||||
|
$(use_with berkdb db4 "${EPREFIX}/usr")
|
||||||
|
$(use_enable flatfile flatfile)
|
||||||
|
$(use_with gdbm gdbm "${EPREFIX}/usr")
|
||||||
|
$(use_enable inifile inifile)
|
||||||
|
$(use_with qdbm qdbm "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Support for the GD graphics library
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with truetype freetype-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with truetype t1lib "${EPREFIX}/usr")
|
||||||
|
$(use_enable cjk gd-jis-conv)
|
||||||
|
$(use_with gd jpeg-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with gd png-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with xpm xpm-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with vpx vpx-dir "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
# enable gd last, so configure can pick up the previous settings
|
||||||
|
our_conf+=( $(use_with gd gd) )
|
||||||
|
|
||||||
|
# IMAP support
|
||||||
|
if use imap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with imap imap "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl imap-ssl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Interbase/firebird support
|
||||||
|
our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
|
||||||
|
|
||||||
|
# LDAP support
|
||||||
|
if use ldap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with ldap ldap "${EPREFIX}/usr")
|
||||||
|
$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MySQL support
|
||||||
|
local mysqllib="mysqlnd"
|
||||||
|
local mysqlilib="mysqlnd"
|
||||||
|
use libmysqlclient && mysqllib="${EPREFIX}/usr"
|
||||||
|
use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
|
||||||
|
|
||||||
|
our_conf+=( $(use_with mysql mysql "${mysqllib}") )
|
||||||
|
our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
|
||||||
|
|
||||||
|
local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||||
|
if use mysql || use mysqli ; then
|
||||||
|
our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ODBC support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with odbc unixODBC "${EPREFIX}/usr")
|
||||||
|
$(use_with iodbc iodbc "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Oracle support
|
||||||
|
our_conf+=( $(use_with oci8-instant-client oci8) )
|
||||||
|
|
||||||
|
# PDO support
|
||||||
|
if use pdo ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with mssql pdo-dblib)
|
||||||
|
$(use_with mysql pdo-mysql "${mysqllib}")
|
||||||
|
$(use_with postgres pdo-pgsql)
|
||||||
|
$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
|
||||||
|
$(use_with firebird pdo-firebird "${EPREFIX}/usr")
|
||||||
|
$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
|
||||||
|
$(use_with oci8-instant-client pdo-oci)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# readline/libedit support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with readline readline "${EPREFIX}/usr")
|
||||||
|
$(use_with libedit libedit "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Session support
|
||||||
|
if use session ; then
|
||||||
|
our_conf+=( $(use_with sharedmem mm "${EPREFIX}/usr") )
|
||||||
|
else
|
||||||
|
our_conf+=( $(use_enable session session) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use pic for shared modules such as apache2's mod_php
|
||||||
|
our_conf+=( --with-pic )
|
||||||
|
|
||||||
|
# we use the system copy of pcre
|
||||||
|
# --with-pcre-regex affects ext/pcre
|
||||||
|
# --with-pcre-dir affects ext/filter and ext/zip
|
||||||
|
our_conf+=(
|
||||||
|
--with-pcre-regex="${EPREFIX}/usr"
|
||||||
|
--with-pcre-dir="${EPREFIX}/usr"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Catch CFLAGS problems
|
||||||
|
# Fixes bug #14067.
|
||||||
|
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||||
|
replace-cpu-flags "k6*" "i586"
|
||||||
|
|
||||||
|
# Cache the ./configure test results between SAPIs.
|
||||||
|
our_conf+=( --cache-file="${T}/config.cache" )
|
||||||
|
|
||||||
|
# Support user-passed configuration parameters
|
||||||
|
our_conf+=( ${EXTRA_ECONF:-} )
|
||||||
|
|
||||||
|
# Support the Apache2 extras, they must be set globally for all
|
||||||
|
# SAPIs to work correctly, especially for external PHP extensions
|
||||||
|
|
||||||
|
mkdir -p "${WORKDIR}/sapis-build" || die
|
||||||
|
for one_sapi in $SAPIS ; do
|
||||||
|
use "${one_sapi}" || continue
|
||||||
|
php_set_ini_dir "${one_sapi}"
|
||||||
|
|
||||||
|
# The BUILD_DIR variable is used to determine where to output
|
||||||
|
# the files that autotools creates. This was all originally
|
||||||
|
# based on the autotools-utils eclass.
|
||||||
|
BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
|
||||||
|
cp -a "${S}" "${BUILD_DIR}" || die
|
||||||
|
cd "${BUILD_DIR}" || die
|
||||||
|
|
||||||
|
local sapi_conf=(
|
||||||
|
--with-config-file-path="${PHP_INI_DIR}"
|
||||||
|
--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
case "$sapi" in
|
||||||
|
cli|cgi|embed|fpm)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( "--enable-${sapi}" )
|
||||||
|
if [[ "fpm" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=(
|
||||||
|
$(use_with acl fpm-acl)
|
||||||
|
$(use_with systemd fpm-systemd)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sapi_conf+=( "--disable-${sapi}" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
apache2)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
|
||||||
|
else
|
||||||
|
sapi_conf+=( --without-apxs2 )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Construct the $myeconfargs array by concatenating $our_conf
|
||||||
|
# (the common args) and $sapi_conf (the SAPI-specific args).
|
||||||
|
local myeconfargs=( "${our_conf[@]}" )
|
||||||
|
myeconfargs+=( "${sapi_conf[@]}" )
|
||||||
|
|
||||||
|
pushd "${BUILD_DIR}" > /dev/null || die
|
||||||
|
econf "${myeconfargs[@]}"
|
||||||
|
popd > /dev/null || die
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# snmp seems to run during src_compile, too (bug #324739)
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
for sapi in ${SAPIS} ; do
|
||||||
|
if use "${sapi}"; then
|
||||||
|
cd "${WORKDIR}/sapis-build/$sapi" || \
|
||||||
|
die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||||
|
emake
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
# see bug #324739 for what happens when we don't have that
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
|
||||||
|
# grab the first SAPI that got built and install common files from there
|
||||||
|
local first_sapi=""
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
if use $sapi ; then
|
||||||
|
first_sapi=$sapi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Makefile forgets to create this before trying to write to it...
|
||||||
|
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||||
|
|
||||||
|
# Install php environment (without any sapis)
|
||||||
|
cd "${WORKDIR}/sapis-build/$first_sapi" || die
|
||||||
|
emake INSTALL_ROOT="${D}" \
|
||||||
|
install-build install-headers install-programs
|
||||||
|
|
||||||
|
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||||
|
|
||||||
|
# Create the directory where we'll put version-specific php scripts
|
||||||
|
keepdir "/usr/share/php${PHP_MV}"
|
||||||
|
|
||||||
|
local sapi="", file=""
|
||||||
|
local sapi_list=""
|
||||||
|
|
||||||
|
for sapi in ${SAPIS}; do
|
||||||
|
if use "${sapi}" ; then
|
||||||
|
einfo "Installing SAPI: ${sapi}"
|
||||||
|
cd "${WORKDIR}/sapis-build/${sapi}" || die
|
||||||
|
|
||||||
|
if [[ "${sapi}" == "apache2" ]] ; then
|
||||||
|
# We're specifically not using emake install-sapi as libtool
|
||||||
|
# may cause unnecessary relink failures (see bug #351266)
|
||||||
|
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||||
|
newins ".libs/libphp5$(get_libname)" \
|
||||||
|
"libphp${PHP_MV}$(get_libname)"
|
||||||
|
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||||
|
else
|
||||||
|
# needed each time, php_install_ini would reset it
|
||||||
|
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
into "${dest}"
|
||||||
|
case "$sapi" in
|
||||||
|
cli)
|
||||||
|
source="sapi/cli/php"
|
||||||
|
;;
|
||||||
|
cgi)
|
||||||
|
source="sapi/cgi/php-cgi"
|
||||||
|
;;
|
||||||
|
fpm)
|
||||||
|
source="sapi/fpm/php-fpm"
|
||||||
|
;;
|
||||||
|
embed)
|
||||||
|
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "unhandled sapi in src_install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||||
|
dolib.so "${source}"
|
||||||
|
else
|
||||||
|
dobin "${source}"
|
||||||
|
local name="$(basename ${source})"
|
||||||
|
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
php_install_ini "${sapi}"
|
||||||
|
|
||||||
|
# construct correct SAPI string for php-config
|
||||||
|
# thanks to ferringb for the bash voodoo
|
||||||
|
if [[ "${sapi}" == "apache2" ]]; then
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||||
|
else
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Installing opcache module
|
||||||
|
if use opcache ; then
|
||||||
|
into "${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
dolib.so "modules/opcache$(get_libname)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install env.d files
|
||||||
|
newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
|
||||||
|
sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
|
||||||
|
# set php-config variable correctly (bug #278439)
|
||||||
|
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||||
|
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
|
||||||
|
|
||||||
|
if use fpm ; then
|
||||||
|
if use systemd; then
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
else
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||||
|
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||||
|
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||||
|
ewarn "Test phase requires USE=cli, skipping"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis/cgi/php-cgi" ]] ; then
|
||||||
|
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \
|
||||||
|
"session.save_path=${T}" \
|
||||||
|
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
|
||||||
|
"session.save_path=${T}"
|
||||||
|
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
|
||||||
|
done
|
||||||
|
|
||||||
|
local failed="$(find -name '*.out')"
|
||||||
|
if [[ ${failed} != "" ]] ; then
|
||||||
|
ewarn "The following test cases failed unexpectedly:"
|
||||||
|
for name in ${failed}; do
|
||||||
|
ewarn " ${name/.out/}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "No unexpected test failures, all fine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||||
|
local passed=""
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
[[ -f "${name}.diff" ]] && continue
|
||||||
|
passed="${passed} ${name}"
|
||||||
|
done
|
||||||
|
if [[ ${passed} != "" ]] ; then
|
||||||
|
einfo "The following test cases passed unexpectedly:"
|
||||||
|
for name in ${passed}; do
|
||||||
|
ewarn " ${passed}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "None of the known-to-fail tests passed, all fine"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
# Output some general info to the user
|
||||||
|
if use apache2 ; then
|
||||||
|
elog
|
||||||
|
elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
|
||||||
|
elog "your apache2 command. OpenRC users can append that string to"
|
||||||
|
elog "APACHE2_OPTS in /etc/conf.d/apache2."
|
||||||
|
elog
|
||||||
|
elog "The apache module configuration file 70_mod_php.conf is"
|
||||||
|
elog "provided (and maintained) by eselect-php."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlinks for php
|
||||||
|
for m in ${SAPIS}; do
|
||||||
|
[[ ${m} == 'embed' ]] && continue;
|
||||||
|
if use $m ; then
|
||||||
|
local ci=$(eselect php show $m)
|
||||||
|
if [[ -z $ci ]]; then
|
||||||
|
eselect php set $m php${SLOT} || die
|
||||||
|
einfo "Switched ${m} to use php:${SLOT}"
|
||||||
|
einfo
|
||||||
|
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||||
|
elog "To switch $m to use php:${SLOT}, run"
|
||||||
|
elog " eselect php set $m php${SLOT}"
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove dead symlinks for SAPIs that were just disabled. For
|
||||||
|
# example, if the user has the cgi SAPI enabled, then he has an
|
||||||
|
# eselect-php symlink for it. If he later reinstalls PHP with
|
||||||
|
# USE="-cgi", that symlink will break. This call to eselect is
|
||||||
|
# supposed to remove that dead link per bug 572436.
|
||||||
|
eselect php cleanup || die
|
||||||
|
|
||||||
|
if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
|
||||||
|
elog "To build extensions for this version of PHP, you will need to"
|
||||||
|
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warn about the removal of PHP_INI_VERSION if the user has it set.
|
||||||
|
if [[ -n "${PHP_INI_VERSION}" ]]; then
|
||||||
|
ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
|
||||||
|
ewarn 'remove it from your configuration at your convenience. See'
|
||||||
|
ewarn
|
||||||
|
ewarn ' https://bugs.gentoo.org/611214'
|
||||||
|
ewarn
|
||||||
|
ewarn 'for more information.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
elog "For details on how version slotting works, please see"
|
||||||
|
elog "the wiki:"
|
||||||
|
elog
|
||||||
|
elog " https://wiki.gentoo.org/wiki/PHP"
|
||||||
|
elog
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
# This serves two purposes. First, if we have just removed the last
|
||||||
|
# installed version of PHP, then this will remove any dead symlinks
|
||||||
|
# belonging to eselect-php. Second, if a user upgrades slots from
|
||||||
|
# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
|
||||||
|
# his existing symlinks to point to the new 7.0 installation. The
|
||||||
|
# latter is bug 432962.
|
||||||
|
#
|
||||||
|
# Note: the eselect-php package may not be installed at this point,
|
||||||
|
# so we can't die() if this command fails.
|
||||||
|
eselect php cleanup
|
||||||
|
}
|
@ -0,0 +1,754 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI="7"
|
||||||
|
|
||||||
|
inherit flag-o-matic systemd
|
||||||
|
|
||||||
|
DESCRIPTION="The PHP language runtime engine"
|
||||||
|
HOMEPAGE="https://secure.php.net/"
|
||||||
|
SRC_URI="https://php.net/distributions/${P}.tar.xz"
|
||||||
|
|
||||||
|
LICENSE="PHP-3.01
|
||||||
|
BSD
|
||||||
|
Zend-2.0
|
||||||
|
bcmath? ( LGPL-2.1+ )
|
||||||
|
fpm? ( BSD-2 )
|
||||||
|
gd? ( gd )
|
||||||
|
unicode? ( BSD-2 LGPL-2.1 )"
|
||||||
|
|
||||||
|
SLOT="$(ver_cut 1-2)"
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||||
|
|
||||||
|
# We can build the following SAPIs in the given order
|
||||||
|
SAPIS="embed cli cgi fpm apache2 phpdbg"
|
||||||
|
|
||||||
|
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||||
|
IUSE="${IUSE}
|
||||||
|
${SAPIS/cli/+cli}
|
||||||
|
threads"
|
||||||
|
|
||||||
|
IUSE="${IUSE} acl bcmath berkdb bzip2 calendar cdb cjk
|
||||||
|
coverage crypt +ctype curl debug
|
||||||
|
enchant exif +fileinfo +filter firebird
|
||||||
|
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||||
|
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
|
||||||
|
mhash mssql mysql mysqli nls
|
||||||
|
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||||
|
readline recode selinux +session sharedmem
|
||||||
|
+simplexml snmp soap sockets spell sqlite ssl
|
||||||
|
sysvipc systemd tidy +tokenizer truetype unicode wddx webp
|
||||||
|
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
|
||||||
|
|
||||||
|
# The supported (that is, autodetected) versions of BDB are listed in
|
||||||
|
# the ./configure script. Other versions *work*, but we need to stick to
|
||||||
|
# the ones that can be detected to avoid a repeat of bug #564824.
|
||||||
|
COMMON_DEPEND="
|
||||||
|
>=app-eselect/eselect-php-0.9.1[apache2?,fpm?]
|
||||||
|
>=dev-libs/libpcre-8.32[unicode]
|
||||||
|
fpm? ( acl? ( sys-apps/acl ) )
|
||||||
|
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||||
|
<www-servers/apache-2.4[threads=] ) )
|
||||||
|
berkdb? ( || ( sys-libs/db:5.3
|
||||||
|
sys-libs/db:5.1
|
||||||
|
sys-libs/db:4.8
|
||||||
|
sys-libs/db:4.7
|
||||||
|
sys-libs/db:4.6
|
||||||
|
sys-libs/db:4.5 ) )
|
||||||
|
bzip2? ( app-arch/bzip2:0= )
|
||||||
|
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||||
|
cjk? ( !gd? (
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0=
|
||||||
|
sys-libs/zlib:0=
|
||||||
|
) )
|
||||||
|
coverage? ( dev-util/lcov )
|
||||||
|
crypt? ( >=dev-libs/libmcrypt-2.4 )
|
||||||
|
curl? ( >=net-misc/curl-7.10.5 )
|
||||||
|
enchant? ( app-text/enchant )
|
||||||
|
exif? ( !gd? (
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0=
|
||||||
|
sys-libs/zlib:0=
|
||||||
|
) )
|
||||||
|
firebird? ( dev-db/firebird )
|
||||||
|
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
|
||||||
|
gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
|
||||||
|
gmp? ( dev-libs/gmp:0= )
|
||||||
|
iconv? ( virtual/libiconv )
|
||||||
|
imap? ( virtual/imap-c-client[kerberos=,ssl=] )
|
||||||
|
intl? ( dev-libs/icu:= )
|
||||||
|
iodbc? ( dev-db/libiodbc )
|
||||||
|
kerberos? ( virtual/krb5 )
|
||||||
|
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||||
|
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||||
|
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||||
|
mssql? ( dev-db/freetds[mssql] )
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||||
|
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||||
|
postgres? ( dev-db/postgresql:* )
|
||||||
|
qdbm? ( dev-db/qdbm )
|
||||||
|
readline? ( sys-libs/readline:0= )
|
||||||
|
recode? ( app-text/recode )
|
||||||
|
sharedmem? ( dev-libs/mm )
|
||||||
|
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||||
|
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
spell? ( >=app-text/aspell-0.50 )
|
||||||
|
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||||
|
ssl? (
|
||||||
|
!libressl? ( dev-libs/openssl:0= )
|
||||||
|
libressl? ( dev-libs/libressl:0= )
|
||||||
|
)
|
||||||
|
tidy? ( app-text/htmltidy )
|
||||||
|
truetype? (
|
||||||
|
=media-libs/freetype-2*
|
||||||
|
!gd? (
|
||||||
|
virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= )
|
||||||
|
)
|
||||||
|
unicode? ( dev-libs/oniguruma:= )
|
||||||
|
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
webp? ( media-libs/libwebp:0= )
|
||||||
|
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||||
|
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xpm? (
|
||||||
|
x11-libs/libXpm
|
||||||
|
virtual/jpeg:0
|
||||||
|
media-libs/libpng:0= sys-libs/zlib:0=
|
||||||
|
)
|
||||||
|
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||||
|
zip? ( sys-libs/zlib:0= )
|
||||||
|
zlib? ( sys-libs/zlib:0= )
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPEND="${COMMON_DEPEND}
|
||||||
|
virtual/mta
|
||||||
|
fpm? (
|
||||||
|
selinux? ( sec-policy/selinux-phpfpm )
|
||||||
|
systemd? ( sys-apps/systemd ) )"
|
||||||
|
|
||||||
|
DEPEND="${COMMON_DEPEND}
|
||||||
|
app-arch/xz-utils
|
||||||
|
>=sys-devel/bison-3.0.1
|
||||||
|
sys-devel/flex
|
||||||
|
>=sys-devel/m4-1.4.3
|
||||||
|
>=sys-devel/libtool-1.5.18"
|
||||||
|
|
||||||
|
# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
|
||||||
|
REQUIRED_USE="
|
||||||
|
|| ( cli cgi fpm apache2 embed phpdbg )
|
||||||
|
cli? ( ^^ ( readline libedit ) )
|
||||||
|
truetype? ( gd zlib )
|
||||||
|
webp? ( gd zlib )
|
||||||
|
cjk? ( gd zlib )
|
||||||
|
exif? ( gd zlib )
|
||||||
|
xpm? ( gd zlib )
|
||||||
|
gd? ( zlib )
|
||||||
|
simplexml? ( xml )
|
||||||
|
soap? ( xml )
|
||||||
|
wddx? ( xml )
|
||||||
|
xmlrpc? ( || ( xml iconv ) )
|
||||||
|
xmlreader? ( xml )
|
||||||
|
xslt? ( xml )
|
||||||
|
ldap-sasl? ( ldap )
|
||||||
|
mhash? ( hash )
|
||||||
|
phar? ( hash )
|
||||||
|
qdbm? ( !gdbm )
|
||||||
|
readline? ( !libedit )
|
||||||
|
recode? ( !imap !mysqli !mysql )
|
||||||
|
sharedmem? ( !threads )
|
||||||
|
mysql? ( || ( mysqli pdo ) )
|
||||||
|
"
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}/mbstring-oniguruma-6.8.patch"
|
||||||
|
# hopefully upstream will include the same version check fixes in upcoming releases
|
||||||
|
# patch added 20180429
|
||||||
|
"${FILESDIR}/libressl-compatibility.patch"
|
||||||
|
"${FILESDIR}/php-freetype-2.9.1.patch"
|
||||||
|
"${FILESDIR}/php-7.0.33-intl-detect-icu-via-pkg-config.patch"
|
||||||
|
"${FILESDIR}/php-7.0.33-intl-use-icu-namespace.patch"
|
||||||
|
"${FILESDIR}/php-7.0.33-intl-icu-memory-corruption.patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
PHP_MV="$(ver_cut 1)"
|
||||||
|
|
||||||
|
php_install_ini() {
|
||||||
|
local phpsapi="${1}"
|
||||||
|
|
||||||
|
# work out where we are installing the ini file
|
||||||
|
php_set_ini_dir "${phpsapi}"
|
||||||
|
|
||||||
|
# Always install the production INI file, bug 611214.
|
||||||
|
local phpinisrc="php.ini-production-${phpsapi}"
|
||||||
|
cp php.ini-production "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# default to /tmp for save_path, bug #282768
|
||||||
|
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the extension dir
|
||||||
|
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \
|
||||||
|
-i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the include path to point to where we want to find PEAR packages
|
||||||
|
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
newins "${phpinisrc}" php.ini
|
||||||
|
|
||||||
|
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
elog
|
||||||
|
|
||||||
|
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||||
|
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||||
|
|
||||||
|
if use opcache; then
|
||||||
|
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||||
|
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \
|
||||||
|
"${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||||
|
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
|
||||||
|
"${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SAPI-specific handling
|
||||||
|
if [[ "${sapi}" == "fpm" ]] ; then
|
||||||
|
einfo "Installing FPM config files php-fpm.conf and www.conf"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
doins sapi/fpm/php-fpm.conf
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d"
|
||||||
|
doins sapi/fpm/www.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
dodoc php.ini-{development,production}
|
||||||
|
}
|
||||||
|
|
||||||
|
php_set_ini_dir() {
|
||||||
|
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||||
|
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||||
|
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
|
||||||
|
# In php-7.x, the FPM pool configuration files have been split off
|
||||||
|
# of the main config. By default the pool config files go in
|
||||||
|
# e.g. /etc/php-fpm.d, which isn't slotted. So here we move the
|
||||||
|
# include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later
|
||||||
|
# we'll install the pool configuration file "www.conf" there.
|
||||||
|
php_set_ini_dir fpm
|
||||||
|
sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \
|
||||||
|
sapi/fpm/php-fpm.conf.in \
|
||||||
|
|| die 'failed to move the include directory in php-fpm.conf'
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||||
|
|
||||||
|
# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
|
||||||
|
# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
|
||||||
|
local our_conf=(
|
||||||
|
--prefix="${PHP_DESTDIR}"
|
||||||
|
--mandir="${PHP_DESTDIR}/man"
|
||||||
|
--infodir="${PHP_DESTDIR}/info"
|
||||||
|
--libdir="${PHP_DESTDIR}/lib"
|
||||||
|
--with-libdir="$(get_libdir)"
|
||||||
|
--localstatedir="${EPREFIX}/var"
|
||||||
|
--without-pear
|
||||||
|
$(use_enable threads maintainer-zts)
|
||||||
|
)
|
||||||
|
|
||||||
|
our_conf+=(
|
||||||
|
$(use_enable bcmath bcmath)
|
||||||
|
$(use_with bzip2 bz2 "${EPREFIX}/usr")
|
||||||
|
$(use_enable calendar calendar)
|
||||||
|
$(use_enable coverage gcov)
|
||||||
|
$(use_enable ctype ctype)
|
||||||
|
$(use_with curl curl "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml dom)
|
||||||
|
$(use_with enchant enchant "${EPREFIX}/usr")
|
||||||
|
$(use_enable exif exif)
|
||||||
|
$(use_enable fileinfo fileinfo)
|
||||||
|
$(use_enable filter filter)
|
||||||
|
$(use_enable ftp ftp)
|
||||||
|
$(use_with nls gettext "${EPREFIX}/usr")
|
||||||
|
$(use_with gmp gmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable hash hash)
|
||||||
|
$(use_with mhash mhash "${EPREFIX}/usr")
|
||||||
|
$(use_with iconv iconv \
|
||||||
|
$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
|
||||||
|
$(use_enable intl intl)
|
||||||
|
$(use_enable ipv6 ipv6)
|
||||||
|
$(use_enable json json)
|
||||||
|
$(use_with kerberos kerberos "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml libxml)
|
||||||
|
$(use_with xml libxml-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable unicode mbstring)
|
||||||
|
$(use_with crypt mcrypt "${EPREFIX}/usr")
|
||||||
|
$(use_with unicode onig "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable pcntl pcntl)
|
||||||
|
$(use_enable phar phar)
|
||||||
|
$(use_enable pdo pdo)
|
||||||
|
$(use_enable opcache opcache)
|
||||||
|
$(use_with postgres pgsql "${EPREFIX}/usr")
|
||||||
|
$(use_enable posix posix)
|
||||||
|
$(use_with spell pspell "${EPREFIX}/usr")
|
||||||
|
$(use_with recode recode "${EPREFIX}/usr")
|
||||||
|
$(use_enable simplexml simplexml)
|
||||||
|
$(use_enable sharedmem shmop)
|
||||||
|
$(use_with snmp snmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable soap soap)
|
||||||
|
$(use_enable sockets sockets)
|
||||||
|
$(use_with sqlite sqlite3 "${EPREFIX}/usr")
|
||||||
|
$(use_enable sysvipc sysvmsg)
|
||||||
|
$(use_enable sysvipc sysvsem)
|
||||||
|
$(use_enable sysvipc sysvshm)
|
||||||
|
$(use_with tidy tidy "${EPREFIX}/usr")
|
||||||
|
$(use_enable tokenizer tokenizer)
|
||||||
|
$(use_enable wddx wddx)
|
||||||
|
$(use_enable xml xml)
|
||||||
|
$(use_enable xmlreader xmlreader)
|
||||||
|
$(use_enable xmlwriter xmlwriter)
|
||||||
|
$(use_with xmlrpc xmlrpc)
|
||||||
|
$(use_with xslt xsl "${EPREFIX}/usr")
|
||||||
|
$(use_enable zip zip)
|
||||||
|
$(use_with zlib zlib "${EPREFIX}/usr")
|
||||||
|
$(use_enable debug debug)
|
||||||
|
)
|
||||||
|
|
||||||
|
# DBA support
|
||||||
|
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||||
|
|| use qdbm ; then
|
||||||
|
our_conf+=( "--enable-dba${shared}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DBA drivers support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with cdb cdb)
|
||||||
|
$(use_with berkdb db4 "${EPREFIX}/usr")
|
||||||
|
$(use_enable flatfile flatfile)
|
||||||
|
$(use_with gdbm gdbm "${EPREFIX}/usr")
|
||||||
|
$(use_enable inifile inifile)
|
||||||
|
$(use_with qdbm qdbm "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Support for the GD graphics library
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with truetype freetype-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable cjk gd-jis-conv)
|
||||||
|
$(use_with gd jpeg-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with gd png-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with xpm xpm-dir "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
if use webp; then
|
||||||
|
our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
|
||||||
|
fi
|
||||||
|
# enable gd last, so configure can pick up the previous settings
|
||||||
|
our_conf+=( $(use_with gd gd) )
|
||||||
|
|
||||||
|
# IMAP support
|
||||||
|
if use imap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with imap imap "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl imap-ssl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Interbase/firebird support
|
||||||
|
our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
|
||||||
|
|
||||||
|
# LDAP support
|
||||||
|
if use ldap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with ldap ldap "${EPREFIX}/usr")
|
||||||
|
$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MySQL support
|
||||||
|
local mysqllib="mysqlnd"
|
||||||
|
local mysqlilib="mysqlnd"
|
||||||
|
|
||||||
|
our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
|
||||||
|
|
||||||
|
local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||||
|
if use mysql || use mysqli ; then
|
||||||
|
our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ODBC support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with odbc unixODBC "${EPREFIX}/usr")
|
||||||
|
$(use_with iodbc iodbc "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Oracle support
|
||||||
|
our_conf+=( $(use_with oci8-instant-client oci8) )
|
||||||
|
|
||||||
|
# PDO support
|
||||||
|
if use pdo ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with mssql pdo-dblib "${EPREFIX}/usr")
|
||||||
|
$(use_with mysql pdo-mysql "${mysqllib}")
|
||||||
|
$(use_with postgres pdo-pgsql)
|
||||||
|
$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
|
||||||
|
$(use_with firebird pdo-firebird "${EPREFIX}/usr")
|
||||||
|
$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
|
||||||
|
$(use_with oci8-instant-client pdo-oci)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# readline/libedit support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with readline readline "${EPREFIX}/usr")
|
||||||
|
$(use_with libedit libedit "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Session support
|
||||||
|
if use session ; then
|
||||||
|
our_conf+=( $(use_with sharedmem mm "${EPREFIX}/usr") )
|
||||||
|
else
|
||||||
|
our_conf+=( $(use_enable session session) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use pic for shared modules such as apache2's mod_php
|
||||||
|
our_conf+=( --with-pic )
|
||||||
|
|
||||||
|
# we use the system copy of pcre
|
||||||
|
# --with-pcre-regex affects ext/pcre
|
||||||
|
# --with-pcre-dir affects ext/filter and ext/zip
|
||||||
|
our_conf+=(
|
||||||
|
--with-pcre-regex="${EPREFIX}/usr"
|
||||||
|
--with-pcre-dir="${EPREFIX}/usr"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Catch CFLAGS problems
|
||||||
|
# Fixes bug #14067.
|
||||||
|
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||||
|
replace-cpu-flags "k6*" "i586"
|
||||||
|
|
||||||
|
# Cache the ./configure test results between SAPIs.
|
||||||
|
our_conf+=( --cache-file="${T}/config.cache" )
|
||||||
|
|
||||||
|
# Support user-passed configuration parameters
|
||||||
|
our_conf+=( ${EXTRA_ECONF:-} )
|
||||||
|
|
||||||
|
# Support the Apache2 extras, they must be set globally for all
|
||||||
|
# SAPIs to work correctly, especially for external PHP extensions
|
||||||
|
|
||||||
|
mkdir -p "${WORKDIR}/sapis-build" || die
|
||||||
|
for one_sapi in $SAPIS ; do
|
||||||
|
use "${one_sapi}" || continue
|
||||||
|
php_set_ini_dir "${one_sapi}"
|
||||||
|
|
||||||
|
# The BUILD_DIR variable is used to determine where to output
|
||||||
|
# the files that autotools creates. This was all originally
|
||||||
|
# based on the autotools-utils eclass.
|
||||||
|
BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
|
||||||
|
cp -a "${S}" "${BUILD_DIR}" || die
|
||||||
|
cd "${BUILD_DIR}" || die
|
||||||
|
|
||||||
|
local sapi_conf=(
|
||||||
|
--with-config-file-path="${PHP_INI_DIR}"
|
||||||
|
--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
case "$sapi" in
|
||||||
|
cli|cgi|embed|fpm|phpdbg)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( "--enable-${sapi}" )
|
||||||
|
if [[ "fpm" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=(
|
||||||
|
$(use_with acl fpm-acl)
|
||||||
|
$(use_with systemd fpm-systemd)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sapi_conf+=( "--disable-${sapi}" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
apache2)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
|
||||||
|
else
|
||||||
|
sapi_conf+=( --without-apxs2 )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Construct the $myeconfargs array by concatenating $our_conf
|
||||||
|
# (the common args) and $sapi_conf (the SAPI-specific args).
|
||||||
|
local myeconfargs=( "${our_conf[@]}" )
|
||||||
|
myeconfargs+=( "${sapi_conf[@]}" )
|
||||||
|
|
||||||
|
pushd "${BUILD_DIR}" > /dev/null || die
|
||||||
|
econf "${myeconfargs[@]}"
|
||||||
|
popd > /dev/null || die
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# snmp seems to run during src_compile, too (bug #324739)
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
for sapi in ${SAPIS} ; do
|
||||||
|
if use "${sapi}"; then
|
||||||
|
cd "${WORKDIR}/sapis-build/$sapi" || \
|
||||||
|
die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||||
|
emake
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
# see bug #324739 for what happens when we don't have that
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
|
||||||
|
# grab the first SAPI that got built and install common files from there
|
||||||
|
local first_sapi=""
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
if use $sapi ; then
|
||||||
|
first_sapi=$sapi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Makefile forgets to create this before trying to write to it...
|
||||||
|
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||||
|
|
||||||
|
# Install php environment (without any sapis)
|
||||||
|
cd "${WORKDIR}/sapis-build/$first_sapi" || die
|
||||||
|
emake INSTALL_ROOT="${D}" \
|
||||||
|
install-build install-headers install-programs
|
||||||
|
|
||||||
|
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||||
|
|
||||||
|
# Create the directory where we'll put version-specific php scripts
|
||||||
|
keepdir "/usr/share/php${PHP_MV}"
|
||||||
|
|
||||||
|
local sapi="", file=""
|
||||||
|
local sapi_list=""
|
||||||
|
|
||||||
|
for sapi in ${SAPIS}; do
|
||||||
|
if use "${sapi}" ; then
|
||||||
|
einfo "Installing SAPI: ${sapi}"
|
||||||
|
cd "${WORKDIR}/sapis-build/${sapi}" || die
|
||||||
|
|
||||||
|
if [[ "${sapi}" == "apache2" ]] ; then
|
||||||
|
# We're specifically not using emake install-sapi as libtool
|
||||||
|
# may cause unnecessary relink failures (see bug #351266)
|
||||||
|
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||||
|
newins ".libs/libphp${PHP_MV}$(get_libname)" \
|
||||||
|
"libphp${PHP_MV}$(get_libname)"
|
||||||
|
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||||
|
else
|
||||||
|
# needed each time, php_install_ini would reset it
|
||||||
|
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
into "${dest}"
|
||||||
|
case "$sapi" in
|
||||||
|
cli)
|
||||||
|
source="sapi/cli/php"
|
||||||
|
;;
|
||||||
|
cgi)
|
||||||
|
source="sapi/cgi/php-cgi"
|
||||||
|
;;
|
||||||
|
fpm)
|
||||||
|
source="sapi/fpm/php-fpm"
|
||||||
|
;;
|
||||||
|
embed)
|
||||||
|
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||||
|
;;
|
||||||
|
phpdbg)
|
||||||
|
source="sapi/phpdbg/phpdbg"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "unhandled sapi in src_install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||||
|
dolib.so "${source}"
|
||||||
|
else
|
||||||
|
dobin "${source}"
|
||||||
|
local name="$(basename ${source})"
|
||||||
|
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
php_install_ini "${sapi}"
|
||||||
|
|
||||||
|
# construct correct SAPI string for php-config
|
||||||
|
# thanks to ferringb for the bash voodoo
|
||||||
|
if [[ "${sapi}" == "apache2" ]]; then
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||||
|
else
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Installing opcache module
|
||||||
|
if use opcache ; then
|
||||||
|
into "${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
dolib.so "modules/opcache$(get_libname)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install env.d files
|
||||||
|
newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
|
||||||
|
sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
|
||||||
|
# set php-config variable correctly (bug #278439)
|
||||||
|
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||||
|
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
|
||||||
|
|
||||||
|
if use fpm ; then
|
||||||
|
if use systemd; then
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
else
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||||
|
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||||
|
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||||
|
ewarn "Test phase requires USE=cli, skipping"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
|
||||||
|
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then
|
||||||
|
export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \
|
||||||
|
"session.save_path=${T}" \
|
||||||
|
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
|
||||||
|
"session.save_path=${T}"
|
||||||
|
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
|
||||||
|
done
|
||||||
|
|
||||||
|
local failed="$(find -name '*.out')"
|
||||||
|
if [[ ${failed} != "" ]] ; then
|
||||||
|
ewarn "The following test cases failed unexpectedly:"
|
||||||
|
for name in ${failed}; do
|
||||||
|
ewarn " ${name/.out/}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "No unexpected test failures, all fine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||||
|
local passed=""
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
[[ -f "${name}.diff" ]] && continue
|
||||||
|
passed="${passed} ${name}"
|
||||||
|
done
|
||||||
|
if [[ ${passed} != "" ]] ; then
|
||||||
|
einfo "The following test cases passed unexpectedly:"
|
||||||
|
for name in ${passed}; do
|
||||||
|
ewarn " ${passed}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "None of the known-to-fail tests passed, all fine"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
# Output some general info to the user
|
||||||
|
if use apache2 ; then
|
||||||
|
elog
|
||||||
|
elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
|
||||||
|
elog "your apache2 command. OpenRC users can append that string to"
|
||||||
|
elog "APACHE2_OPTS in /etc/conf.d/apache2."
|
||||||
|
elog
|
||||||
|
elog "The apache module configuration file 70_mod_php.conf is"
|
||||||
|
elog "provided (and maintained) by eselect-php."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlinks for php
|
||||||
|
for m in ${SAPIS}; do
|
||||||
|
[[ ${m} == 'embed' ]] && continue;
|
||||||
|
if use $m ; then
|
||||||
|
local ci=$(eselect php show $m)
|
||||||
|
if [[ -z $ci ]]; then
|
||||||
|
eselect php set $m php${SLOT} || die
|
||||||
|
einfo "Switched ${m} to use php:${SLOT}"
|
||||||
|
einfo
|
||||||
|
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||||
|
elog "To switch $m to use php:${SLOT}, run"
|
||||||
|
elog " eselect php set $m php${SLOT}"
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove dead symlinks for SAPIs that were just disabled. For
|
||||||
|
# example, if the user has the cgi SAPI enabled, then he has an
|
||||||
|
# eselect-php symlink for it. If he later reinstalls PHP with
|
||||||
|
# USE="-cgi", that symlink will break. This call to eselect is
|
||||||
|
# supposed to remove that dead link per bug 572436.
|
||||||
|
eselect php cleanup || die
|
||||||
|
|
||||||
|
if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
|
||||||
|
elog "To build extensions for this version of PHP, you will need to"
|
||||||
|
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warn about the removal of PHP_INI_VERSION if the user has it set.
|
||||||
|
if [[ -n "${PHP_INI_VERSION}" ]]; then
|
||||||
|
ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
|
||||||
|
ewarn 'remove it from your configuration at your convenience. See'
|
||||||
|
ewarn
|
||||||
|
ewarn ' https://bugs.gentoo.org/611214'
|
||||||
|
ewarn
|
||||||
|
ewarn 'for more information.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
elog "For details on how version slotting works, please see"
|
||||||
|
elog "the wiki:"
|
||||||
|
elog
|
||||||
|
elog " https://wiki.gentoo.org/wiki/PHP"
|
||||||
|
elog
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
# This serves two purposes. First, if we have just removed the last
|
||||||
|
# installed version of PHP, then this will remove any dead symlinks
|
||||||
|
# belonging to eselect-php. Second, if a user upgrades slots from
|
||||||
|
# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
|
||||||
|
# his existing symlinks to point to the new 7.0 installation. The
|
||||||
|
# latter is bug 432962.
|
||||||
|
#
|
||||||
|
# Note: the eselect-php package may not be installed at this point,
|
||||||
|
# so we can't die() if this command fails.
|
||||||
|
eselect php cleanup
|
||||||
|
}
|
@ -0,0 +1,736 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
inherit flag-o-matic systemd autotools
|
||||||
|
|
||||||
|
DESCRIPTION="The PHP language runtime engine"
|
||||||
|
HOMEPAGE="https://secure.php.net/"
|
||||||
|
SRC_URI="https://secure.php.net/distributions/${P}.tar.xz"
|
||||||
|
|
||||||
|
LICENSE="PHP-3.01
|
||||||
|
BSD
|
||||||
|
Zend-2.0
|
||||||
|
bcmath? ( LGPL-2.1+ )
|
||||||
|
fpm? ( BSD-2 )
|
||||||
|
gd? ( gd )
|
||||||
|
unicode? ( BSD-2 LGPL-2.1 )"
|
||||||
|
|
||||||
|
SLOT="$(ver_cut 1-2)"
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||||
|
|
||||||
|
# We can build the following SAPIs in the given order
|
||||||
|
SAPIS="embed cli cgi fpm apache2 phpdbg"
|
||||||
|
|
||||||
|
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||||
|
IUSE="${IUSE}
|
||||||
|
${SAPIS/cli/+cli}
|
||||||
|
threads"
|
||||||
|
|
||||||
|
IUSE="${IUSE} acl bcmath berkdb bzip2 calendar cdb cjk
|
||||||
|
coverage crypt +ctype curl debug
|
||||||
|
enchant exif +fileinfo +filter firebird
|
||||||
|
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||||
|
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl
|
||||||
|
mhash mssql mysql mysqli nls
|
||||||
|
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||||
|
readline recode selinux +session session-mm sharedmem
|
||||||
|
+simplexml snmp soap sockets spell sqlite ssl
|
||||||
|
sysvipc systemd test tidy +tokenizer truetype unicode wddx webp
|
||||||
|
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
|
||||||
|
|
||||||
|
# The supported (that is, autodetected) versions of BDB are listed in
|
||||||
|
# the ./configure script. Other versions *work*, but we need to stick to
|
||||||
|
# the ones that can be detected to avoid a repeat of bug #564824.
|
||||||
|
COMMON_DEPEND="
|
||||||
|
>=app-eselect/eselect-php-0.9.1[apache2?,fpm?]
|
||||||
|
>=dev-libs/libpcre-8.32[unicode]
|
||||||
|
fpm? ( acl? ( sys-apps/acl ) )
|
||||||
|
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||||
|
<www-servers/apache-2.4[threads=] ) )
|
||||||
|
berkdb? ( || ( sys-libs/db:5.3
|
||||||
|
sys-libs/db:5.1
|
||||||
|
sys-libs/db:4.8
|
||||||
|
sys-libs/db:4.7
|
||||||
|
sys-libs/db:4.6
|
||||||
|
sys-libs/db:4.5 ) )
|
||||||
|
bzip2? ( app-arch/bzip2:0= )
|
||||||
|
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||||
|
coverage? ( dev-util/lcov )
|
||||||
|
crypt? ( >=dev-libs/libmcrypt-2.4 )
|
||||||
|
curl? ( >=net-misc/curl-7.10.5 )
|
||||||
|
enchant? ( <app-text/enchant-2.0:0 )
|
||||||
|
firebird? ( dev-db/firebird )
|
||||||
|
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||||
|
gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
|
||||||
|
gmp? ( dev-libs/gmp:0= )
|
||||||
|
iconv? ( virtual/libiconv )
|
||||||
|
imap? ( virtual/imap-c-client[kerberos=,ssl=] )
|
||||||
|
intl? ( dev-libs/icu:= )
|
||||||
|
iodbc? ( dev-db/libiodbc )
|
||||||
|
kerberos? ( virtual/krb5 )
|
||||||
|
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||||
|
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||||
|
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||||
|
mssql? ( dev-db/freetds[mssql] )
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||||
|
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||||
|
postgres? ( dev-db/postgresql:* )
|
||||||
|
qdbm? ( dev-db/qdbm )
|
||||||
|
readline? ( sys-libs/readline:0= )
|
||||||
|
recode? ( app-text/recode )
|
||||||
|
session-mm? ( dev-libs/mm )
|
||||||
|
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||||
|
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
spell? ( >=app-text/aspell-0.50 )
|
||||||
|
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||||
|
ssl? (
|
||||||
|
!libressl? ( dev-libs/openssl:0= )
|
||||||
|
libressl? ( dev-libs/libressl:0= )
|
||||||
|
)
|
||||||
|
tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
|
||||||
|
truetype? ( =media-libs/freetype-2* )
|
||||||
|
unicode? ( dev-libs/oniguruma:= )
|
||||||
|
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
webp? ( media-libs/libwebp:0= )
|
||||||
|
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||||
|
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xpm? ( x11-libs/libXpm )
|
||||||
|
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||||
|
zip? ( sys-libs/zlib:0= )
|
||||||
|
zlib? ( sys-libs/zlib:0= )
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPEND="${COMMON_DEPEND}
|
||||||
|
virtual/mta
|
||||||
|
fpm? (
|
||||||
|
selinux? ( sec-policy/selinux-phpfpm )
|
||||||
|
systemd? ( sys-apps/systemd ) )"
|
||||||
|
|
||||||
|
# Bison isn't actually needed when building from a release tarball
|
||||||
|
# However, the configure script will warn if it's absent or if you
|
||||||
|
# have an incompatible version installed. See bug 593278.
|
||||||
|
DEPEND="${COMMON_DEPEND}
|
||||||
|
app-arch/xz-utils
|
||||||
|
>=sys-devel/bison-3.0.1"
|
||||||
|
|
||||||
|
# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
|
||||||
|
REQUIRED_USE="
|
||||||
|
|| ( cli cgi fpm apache2 embed phpdbg )
|
||||||
|
cli? ( ^^ ( readline libedit ) )
|
||||||
|
truetype? ( gd zlib )
|
||||||
|
webp? ( gd zlib )
|
||||||
|
cjk? ( gd zlib )
|
||||||
|
exif? ( gd zlib )
|
||||||
|
xpm? ( gd zlib )
|
||||||
|
gd? ( zlib )
|
||||||
|
simplexml? ( xml )
|
||||||
|
soap? ( xml )
|
||||||
|
wddx? ( xml )
|
||||||
|
xmlrpc? ( || ( xml iconv ) )
|
||||||
|
xmlreader? ( xml )
|
||||||
|
xslt? ( xml )
|
||||||
|
ldap-sasl? ( ldap )
|
||||||
|
mhash? ( hash )
|
||||||
|
phar? ( hash )
|
||||||
|
qdbm? ( !gdbm )
|
||||||
|
readline? ( !libedit )
|
||||||
|
recode? ( !imap !mysqli !mysql )
|
||||||
|
session-mm? ( session !threads )
|
||||||
|
mysql? ( hash || ( mysqli pdo ) )
|
||||||
|
mysqli? ( hash )
|
||||||
|
"
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}/php-freetype-2.9.1.patch"
|
||||||
|
"${FILESDIR}/php-7.1.25-intl-detect-icu-via-pkg-config.patch"
|
||||||
|
"${FILESDIR}/php-7.1.25-intl-use-icu-namespace.patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
PHP_MV="$(ver_cut 1)"
|
||||||
|
|
||||||
|
php_install_ini() {
|
||||||
|
local phpsapi="${1}"
|
||||||
|
|
||||||
|
# work out where we are installing the ini file
|
||||||
|
php_set_ini_dir "${phpsapi}"
|
||||||
|
|
||||||
|
# Always install the production INI file, bug 611214.
|
||||||
|
local phpinisrc="php.ini-production-${phpsapi}"
|
||||||
|
cp php.ini-production "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# default to /tmp for save_path, bug #282768
|
||||||
|
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the extension dir
|
||||||
|
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \
|
||||||
|
-i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the include path to point to where we want to find PEAR packages
|
||||||
|
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
newins "${phpinisrc}" php.ini
|
||||||
|
|
||||||
|
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
elog
|
||||||
|
|
||||||
|
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||||
|
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||||
|
|
||||||
|
if use opcache; then
|
||||||
|
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||||
|
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \
|
||||||
|
"${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||||
|
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
|
||||||
|
"${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SAPI-specific handling
|
||||||
|
if [[ "${sapi}" == "fpm" ]] ; then
|
||||||
|
einfo "Installing FPM config files php-fpm.conf and www.conf"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
doins sapi/fpm/php-fpm.conf
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d"
|
||||||
|
doins sapi/fpm/www.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
dodoc php.ini-{development,production}
|
||||||
|
}
|
||||||
|
|
||||||
|
php_set_ini_dir() {
|
||||||
|
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||||
|
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||||
|
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
|
||||||
|
# In php-7.x, the FPM pool configuration files have been split off
|
||||||
|
# of the main config. By default the pool config files go in
|
||||||
|
# e.g. /etc/php-fpm.d, which isn't slotted. So here we move the
|
||||||
|
# include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later
|
||||||
|
# we'll install the pool configuration file "www.conf" there.
|
||||||
|
php_set_ini_dir fpm
|
||||||
|
sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \
|
||||||
|
sapi/fpm/php-fpm.conf.in \
|
||||||
|
|| die 'failed to move the include directory in php-fpm.conf'
|
||||||
|
|
||||||
|
# Bug 669566 - necessary so that build tools are updated for commands like pecl
|
||||||
|
# Force rebuilding aclocal.m4
|
||||||
|
rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
|
||||||
|
eautoreconf
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||||
|
|
||||||
|
# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
|
||||||
|
# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
|
||||||
|
local our_conf=(
|
||||||
|
--prefix="${PHP_DESTDIR}"
|
||||||
|
--mandir="${PHP_DESTDIR}/man"
|
||||||
|
--infodir="${PHP_DESTDIR}/info"
|
||||||
|
--libdir="${PHP_DESTDIR}/lib"
|
||||||
|
--with-libdir="$(get_libdir)"
|
||||||
|
--localstatedir="${EPREFIX}/var"
|
||||||
|
--without-pear
|
||||||
|
$(use_enable threads maintainer-zts)
|
||||||
|
)
|
||||||
|
|
||||||
|
our_conf+=(
|
||||||
|
$(use_enable bcmath bcmath)
|
||||||
|
$(use_with bzip2 bz2 "${EPREFIX}/usr")
|
||||||
|
$(use_enable calendar calendar)
|
||||||
|
$(use_enable coverage gcov)
|
||||||
|
$(use_enable ctype ctype)
|
||||||
|
$(use_with curl curl "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml dom)
|
||||||
|
$(use_with enchant enchant "${EPREFIX}/usr")
|
||||||
|
$(use_enable exif exif)
|
||||||
|
$(use_enable fileinfo fileinfo)
|
||||||
|
$(use_enable filter filter)
|
||||||
|
$(use_enable ftp ftp)
|
||||||
|
$(use_with nls gettext "${EPREFIX}/usr")
|
||||||
|
$(use_with gmp gmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable hash hash)
|
||||||
|
$(use_with mhash mhash "${EPREFIX}/usr")
|
||||||
|
$(use_with iconv iconv \
|
||||||
|
$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
|
||||||
|
$(use_enable intl intl)
|
||||||
|
$(use_enable ipv6 ipv6)
|
||||||
|
$(use_enable json json)
|
||||||
|
$(use_with kerberos kerberos "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml libxml)
|
||||||
|
$(use_with xml libxml-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable unicode mbstring)
|
||||||
|
$(use_with crypt mcrypt "${EPREFIX}/usr")
|
||||||
|
$(use_with unicode onig "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable pcntl pcntl)
|
||||||
|
$(use_enable phar phar)
|
||||||
|
$(use_enable pdo pdo)
|
||||||
|
$(use_enable opcache opcache)
|
||||||
|
$(use_with postgres pgsql "${EPREFIX}/usr")
|
||||||
|
$(use_enable posix posix)
|
||||||
|
$(use_with spell pspell "${EPREFIX}/usr")
|
||||||
|
$(use_with recode recode "${EPREFIX}/usr")
|
||||||
|
$(use_enable simplexml simplexml)
|
||||||
|
$(use_enable sharedmem shmop)
|
||||||
|
$(use_with snmp snmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable soap soap)
|
||||||
|
$(use_enable sockets sockets)
|
||||||
|
$(use_with sqlite sqlite3 "${EPREFIX}/usr")
|
||||||
|
$(use_enable sysvipc sysvmsg)
|
||||||
|
$(use_enable sysvipc sysvsem)
|
||||||
|
$(use_enable sysvipc sysvshm)
|
||||||
|
$(use_with tidy tidy "${EPREFIX}/usr")
|
||||||
|
$(use_enable tokenizer tokenizer)
|
||||||
|
$(use_enable wddx wddx)
|
||||||
|
$(use_enable xml xml)
|
||||||
|
$(use_enable xmlreader xmlreader)
|
||||||
|
$(use_enable xmlwriter xmlwriter)
|
||||||
|
$(use_with xmlrpc xmlrpc)
|
||||||
|
$(use_with xslt xsl "${EPREFIX}/usr")
|
||||||
|
$(use_enable zip zip)
|
||||||
|
$(use_with zlib zlib "${EPREFIX}/usr")
|
||||||
|
$(use_enable debug debug)
|
||||||
|
)
|
||||||
|
|
||||||
|
# DBA support
|
||||||
|
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||||
|
|| use qdbm ; then
|
||||||
|
our_conf+=( "--enable-dba${shared}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DBA drivers support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with cdb cdb)
|
||||||
|
$(use_with berkdb db4 "${EPREFIX}/usr")
|
||||||
|
$(use_enable flatfile flatfile)
|
||||||
|
$(use_with gdbm gdbm "${EPREFIX}/usr")
|
||||||
|
$(use_enable inifile inifile)
|
||||||
|
$(use_with qdbm qdbm "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Support for the GD graphics library
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with truetype freetype-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable cjk gd-jis-conv)
|
||||||
|
$(use_with gd jpeg-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with gd png-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with xpm xpm-dir "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
if use webp; then
|
||||||
|
our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
|
||||||
|
fi
|
||||||
|
# enable gd last, so configure can pick up the previous settings
|
||||||
|
our_conf+=( $(use_with gd gd) )
|
||||||
|
|
||||||
|
# IMAP support
|
||||||
|
if use imap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with imap imap "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl imap-ssl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Interbase/firebird support
|
||||||
|
our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
|
||||||
|
|
||||||
|
# LDAP support
|
||||||
|
if use ldap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with ldap ldap "${EPREFIX}/usr")
|
||||||
|
$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MySQL support
|
||||||
|
local mysqllib="mysqlnd"
|
||||||
|
local mysqlilib="mysqlnd"
|
||||||
|
|
||||||
|
our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
|
||||||
|
|
||||||
|
local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||||
|
if use mysql || use mysqli ; then
|
||||||
|
our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ODBC support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with odbc unixODBC "${EPREFIX}/usr")
|
||||||
|
$(use_with iodbc iodbc "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Oracle support
|
||||||
|
our_conf+=( $(use_with oci8-instant-client oci8) )
|
||||||
|
|
||||||
|
# PDO support
|
||||||
|
if use pdo ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with mssql pdo-dblib "${EPREFIX}/usr")
|
||||||
|
$(use_with mysql pdo-mysql "${mysqllib}")
|
||||||
|
$(use_with postgres pdo-pgsql)
|
||||||
|
$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
|
||||||
|
$(use_with firebird pdo-firebird "${EPREFIX}/usr")
|
||||||
|
$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
|
||||||
|
$(use_with oci8-instant-client pdo-oci)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# readline/libedit support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with readline readline "${EPREFIX}/usr")
|
||||||
|
$(use_with libedit libedit "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Session support
|
||||||
|
if use session ; then
|
||||||
|
our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
|
||||||
|
else
|
||||||
|
our_conf+=( $(use_enable session session) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use pic for shared modules such as apache2's mod_php
|
||||||
|
our_conf+=( --with-pic )
|
||||||
|
|
||||||
|
# we use the system copy of pcre
|
||||||
|
# --with-pcre-regex affects ext/pcre
|
||||||
|
# --with-pcre-dir affects ext/filter and ext/zip
|
||||||
|
our_conf+=(
|
||||||
|
--with-pcre-regex="${EPREFIX}/usr"
|
||||||
|
--with-pcre-dir="${EPREFIX}/usr"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Catch CFLAGS problems
|
||||||
|
# Fixes bug #14067.
|
||||||
|
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||||
|
replace-cpu-flags "k6*" "i586"
|
||||||
|
|
||||||
|
# Cache the ./configure test results between SAPIs.
|
||||||
|
our_conf+=( --cache-file="${T}/config.cache" )
|
||||||
|
|
||||||
|
# Support user-passed configuration parameters
|
||||||
|
our_conf+=( ${EXTRA_ECONF:-} )
|
||||||
|
|
||||||
|
# Support the Apache2 extras, they must be set globally for all
|
||||||
|
# SAPIs to work correctly, especially for external PHP extensions
|
||||||
|
|
||||||
|
mkdir -p "${WORKDIR}/sapis-build" || die
|
||||||
|
for one_sapi in $SAPIS ; do
|
||||||
|
use "${one_sapi}" || continue
|
||||||
|
php_set_ini_dir "${one_sapi}"
|
||||||
|
|
||||||
|
# The BUILD_DIR variable is used to determine where to output
|
||||||
|
# the files that autotools creates. This was all originally
|
||||||
|
# based on the autotools-utils eclass.
|
||||||
|
BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
|
||||||
|
cp -a "${S}" "${BUILD_DIR}" || die
|
||||||
|
cd "${BUILD_DIR}" || die
|
||||||
|
|
||||||
|
local sapi_conf=(
|
||||||
|
--with-config-file-path="${PHP_INI_DIR}"
|
||||||
|
--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
case "$sapi" in
|
||||||
|
cli|cgi|embed|fpm|phpdbg)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( "--enable-${sapi}" )
|
||||||
|
if [[ "fpm" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=(
|
||||||
|
$(use_with acl fpm-acl)
|
||||||
|
$(use_with systemd fpm-systemd)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sapi_conf+=( "--disable-${sapi}" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
apache2)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
|
||||||
|
else
|
||||||
|
sapi_conf+=( --without-apxs2 )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Construct the $myeconfargs array by concatenating $our_conf
|
||||||
|
# (the common args) and $sapi_conf (the SAPI-specific args).
|
||||||
|
local myeconfargs=( "${our_conf[@]}" )
|
||||||
|
myeconfargs+=( "${sapi_conf[@]}" )
|
||||||
|
|
||||||
|
pushd "${BUILD_DIR}" > /dev/null || die
|
||||||
|
econf "${myeconfargs[@]}"
|
||||||
|
popd > /dev/null || die
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# snmp seems to run during src_compile, too (bug #324739)
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
for sapi in ${SAPIS} ; do
|
||||||
|
if use "${sapi}"; then
|
||||||
|
cd "${WORKDIR}/sapis-build/$sapi" || \
|
||||||
|
die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||||
|
emake
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
# see bug #324739 for what happens when we don't have that
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
|
||||||
|
# grab the first SAPI that got built and install common files from there
|
||||||
|
local first_sapi=""
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
if use $sapi ; then
|
||||||
|
first_sapi=$sapi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Makefile forgets to create this before trying to write to it...
|
||||||
|
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||||
|
|
||||||
|
# Install php environment (without any sapis)
|
||||||
|
cd "${WORKDIR}/sapis-build/$first_sapi" || die
|
||||||
|
emake INSTALL_ROOT="${D}" \
|
||||||
|
install-build install-headers install-programs
|
||||||
|
|
||||||
|
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||||
|
|
||||||
|
# Create the directory where we'll put version-specific php scripts
|
||||||
|
keepdir "/usr/share/php${PHP_MV}"
|
||||||
|
|
||||||
|
local sapi="", file=""
|
||||||
|
local sapi_list=""
|
||||||
|
|
||||||
|
for sapi in ${SAPIS}; do
|
||||||
|
if use "${sapi}" ; then
|
||||||
|
einfo "Installing SAPI: ${sapi}"
|
||||||
|
cd "${WORKDIR}/sapis-build/${sapi}" || die
|
||||||
|
|
||||||
|
if [[ "${sapi}" == "apache2" ]] ; then
|
||||||
|
# We're specifically not using emake install-sapi as libtool
|
||||||
|
# may cause unnecessary relink failures (see bug #351266)
|
||||||
|
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||||
|
newins ".libs/libphp${PHP_MV}$(get_libname)" \
|
||||||
|
"libphp${PHP_MV}$(get_libname)"
|
||||||
|
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||||
|
else
|
||||||
|
# needed each time, php_install_ini would reset it
|
||||||
|
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
into "${dest}"
|
||||||
|
case "$sapi" in
|
||||||
|
cli)
|
||||||
|
source="sapi/cli/php"
|
||||||
|
;;
|
||||||
|
cgi)
|
||||||
|
source="sapi/cgi/php-cgi"
|
||||||
|
;;
|
||||||
|
fpm)
|
||||||
|
source="sapi/fpm/php-fpm"
|
||||||
|
;;
|
||||||
|
embed)
|
||||||
|
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||||
|
;;
|
||||||
|
phpdbg)
|
||||||
|
source="sapi/phpdbg/phpdbg"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "unhandled sapi in src_install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||||
|
dolib.so "${source}"
|
||||||
|
else
|
||||||
|
dobin "${source}"
|
||||||
|
local name="$(basename ${source})"
|
||||||
|
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
php_install_ini "${sapi}"
|
||||||
|
|
||||||
|
# construct correct SAPI string for php-config
|
||||||
|
# thanks to ferringb for the bash voodoo
|
||||||
|
if [[ "${sapi}" == "apache2" ]]; then
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||||
|
else
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Installing opcache module
|
||||||
|
if use opcache ; then
|
||||||
|
into "${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
dolib.so "modules/opcache$(get_libname)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install env.d files
|
||||||
|
newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
|
||||||
|
sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
|
||||||
|
# set php-config variable correctly (bug #278439)
|
||||||
|
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||||
|
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
|
||||||
|
|
||||||
|
if use fpm ; then
|
||||||
|
if use systemd; then
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
else
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||||
|
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||||
|
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||||
|
ewarn "Test phase requires USE=cli, skipping"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
|
||||||
|
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then
|
||||||
|
export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \
|
||||||
|
"session.save_path=${T}" \
|
||||||
|
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
|
||||||
|
"session.save_path=${T}"
|
||||||
|
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
|
||||||
|
done
|
||||||
|
|
||||||
|
local failed="$(find -name '*.out')"
|
||||||
|
if [[ ${failed} != "" ]] ; then
|
||||||
|
ewarn "The following test cases failed unexpectedly:"
|
||||||
|
for name in ${failed}; do
|
||||||
|
ewarn " ${name/.out/}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "No unexpected test failures, all fine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||||
|
local passed=""
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
[[ -f "${name}.diff" ]] && continue
|
||||||
|
passed="${passed} ${name}"
|
||||||
|
done
|
||||||
|
if [[ ${passed} != "" ]] ; then
|
||||||
|
einfo "The following test cases passed unexpectedly:"
|
||||||
|
for name in ${passed}; do
|
||||||
|
ewarn " ${passed}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "None of the known-to-fail tests passed, all fine"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
# Output some general info to the user
|
||||||
|
if use apache2 ; then
|
||||||
|
elog
|
||||||
|
elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
|
||||||
|
elog "your apache2 command. OpenRC users can append that string to"
|
||||||
|
elog "APACHE2_OPTS in /etc/conf.d/apache2."
|
||||||
|
elog
|
||||||
|
elog "The apache module configuration file 70_mod_php.conf is"
|
||||||
|
elog "provided (and maintained) by eselect-php."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlinks for php
|
||||||
|
for m in ${SAPIS}; do
|
||||||
|
[[ ${m} == 'embed' ]] && continue;
|
||||||
|
if use $m ; then
|
||||||
|
local ci=$(eselect php show $m)
|
||||||
|
if [[ -z $ci ]]; then
|
||||||
|
eselect php set $m php${SLOT} || die
|
||||||
|
einfo "Switched ${m} to use php:${SLOT}"
|
||||||
|
einfo
|
||||||
|
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||||
|
elog "To switch $m to use php:${SLOT}, run"
|
||||||
|
elog " eselect php set $m php${SLOT}"
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove dead symlinks for SAPIs that were just disabled. For
|
||||||
|
# example, if the user has the cgi SAPI enabled, then he has an
|
||||||
|
# eselect-php symlink for it. If he later reinstalls PHP with
|
||||||
|
# USE="-cgi", that symlink will break. This call to eselect is
|
||||||
|
# supposed to remove that dead link per bug 572436.
|
||||||
|
eselect php cleanup || die
|
||||||
|
|
||||||
|
if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
|
||||||
|
elog "To build extensions for this version of PHP, you will need to"
|
||||||
|
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warn about the removal of PHP_INI_VERSION if the user has it set.
|
||||||
|
if [[ -n "${PHP_INI_VERSION}" ]]; then
|
||||||
|
ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
|
||||||
|
ewarn 'remove it from your configuration at your convenience. See'
|
||||||
|
ewarn
|
||||||
|
ewarn ' https://bugs.gentoo.org/611214'
|
||||||
|
ewarn
|
||||||
|
ewarn 'for more information.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
elog "For details on how version slotting works, please see"
|
||||||
|
elog "the wiki:"
|
||||||
|
elog
|
||||||
|
elog " https://wiki.gentoo.org/wiki/PHP"
|
||||||
|
elog
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
# This serves two purposes. First, if we have just removed the last
|
||||||
|
# installed version of PHP, then this will remove any dead symlinks
|
||||||
|
# belonging to eselect-php. Second, if a user upgrades slots from
|
||||||
|
# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
|
||||||
|
# his existing symlinks to point to the new 7.0 installation. The
|
||||||
|
# latter is bug 432962.
|
||||||
|
#
|
||||||
|
# Note: the eselect-php package may not be installed at this point,
|
||||||
|
# so we can't die() if this command fails.
|
||||||
|
eselect php cleanup
|
||||||
|
}
|
@ -0,0 +1,748 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
inherit flag-o-matic systemd autotools
|
||||||
|
|
||||||
|
DESCRIPTION="The PHP language runtime engine"
|
||||||
|
HOMEPAGE="https://secure.php.net/"
|
||||||
|
SRC_URI="https://php.net/distributions/${P}.tar.xz"
|
||||||
|
|
||||||
|
LICENSE="PHP-3.01
|
||||||
|
BSD
|
||||||
|
Zend-2.0
|
||||||
|
bcmath? ( LGPL-2.1+ )
|
||||||
|
fpm? ( BSD-2 )
|
||||||
|
gd? ( gd )
|
||||||
|
unicode? ( BSD-2 LGPL-2.1 )"
|
||||||
|
|
||||||
|
SLOT="$(ver_cut 1-2)"
|
||||||
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||||
|
|
||||||
|
# We can build the following SAPIs in the given order
|
||||||
|
SAPIS="embed cli cgi fpm apache2 phpdbg"
|
||||||
|
|
||||||
|
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||||
|
IUSE="${IUSE}
|
||||||
|
${SAPIS/cli/+cli}
|
||||||
|
threads"
|
||||||
|
|
||||||
|
IUSE="${IUSE} acl argon2 bcmath berkdb bzip2 calendar cdb cjk
|
||||||
|
coverage +ctype curl debug
|
||||||
|
enchant exif +fileinfo +filter firebird
|
||||||
|
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||||
|
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb
|
||||||
|
mhash mssql mysql mysqli nls
|
||||||
|
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||||
|
readline recode selinux +session session-mm sharedmem
|
||||||
|
+simplexml snmp soap sockets sodium spell sqlite ssl
|
||||||
|
sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp
|
||||||
|
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib"
|
||||||
|
|
||||||
|
# The supported (that is, autodetected) versions of BDB are listed in
|
||||||
|
# the ./configure script. Other versions *work*, but we need to stick to
|
||||||
|
# the ones that can be detected to avoid a repeat of bug #564824.
|
||||||
|
COMMON_DEPEND="
|
||||||
|
>=app-eselect/eselect-php-0.9.1[apache2?,fpm?]
|
||||||
|
>=dev-libs/libpcre-8.32[unicode]
|
||||||
|
fpm? ( acl? ( sys-apps/acl ) )
|
||||||
|
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||||
|
<www-servers/apache-2.4[threads=] ) )
|
||||||
|
argon2? ( app-crypt/argon2:= )
|
||||||
|
berkdb? ( || ( sys-libs/db:5.3
|
||||||
|
sys-libs/db:5.1
|
||||||
|
sys-libs/db:4.8
|
||||||
|
sys-libs/db:4.7
|
||||||
|
sys-libs/db:4.6
|
||||||
|
sys-libs/db:4.5 ) )
|
||||||
|
bzip2? ( app-arch/bzip2:0= )
|
||||||
|
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||||
|
coverage? ( dev-util/lcov )
|
||||||
|
curl? ( >=net-misc/curl-7.10.5 )
|
||||||
|
enchant? ( <app-text/enchant-2.0:0 )
|
||||||
|
firebird? ( dev-db/firebird )
|
||||||
|
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||||
|
gdbm? ( >=sys-libs/gdbm-1.8.0:0= )
|
||||||
|
gmp? ( dev-libs/gmp:0= )
|
||||||
|
iconv? ( virtual/libiconv )
|
||||||
|
imap? ( virtual/imap-c-client[kerberos=,ssl=] )
|
||||||
|
intl? ( dev-libs/icu:= )
|
||||||
|
iodbc? ( dev-db/libiodbc )
|
||||||
|
kerberos? ( virtual/krb5 )
|
||||||
|
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||||
|
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||||
|
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||||
|
lmdb? ( dev-db/lmdb:= )
|
||||||
|
mssql? ( dev-db/freetds[mssql] )
|
||||||
|
nls? ( sys-devel/gettext )
|
||||||
|
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||||
|
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||||
|
postgres? ( dev-db/postgresql:* )
|
||||||
|
qdbm? ( dev-db/qdbm )
|
||||||
|
readline? ( sys-libs/readline:0= )
|
||||||
|
recode? ( app-text/recode )
|
||||||
|
session-mm? ( dev-libs/mm )
|
||||||
|
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||||
|
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
sodium? ( dev-libs/libsodium:= )
|
||||||
|
spell? ( >=app-text/aspell-0.50 )
|
||||||
|
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||||
|
ssl? (
|
||||||
|
!libressl? ( dev-libs/openssl:0= )
|
||||||
|
libressl? ( dev-libs/libressl:0= )
|
||||||
|
)
|
||||||
|
tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) )
|
||||||
|
tokyocabinet? ( dev-db/tokyocabinet )
|
||||||
|
truetype? ( =media-libs/freetype-2* )
|
||||||
|
unicode? ( dev-libs/oniguruma:= )
|
||||||
|
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
webp? ( media-libs/libwebp:0= )
|
||||||
|
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||||
|
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||||
|
xpm? ( x11-libs/libXpm )
|
||||||
|
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||||
|
zip? ( sys-libs/zlib:0= )
|
||||||
|
zip-encryption? ( >=dev-libs/libzip-1.2.0:= )
|
||||||
|
zlib? ( sys-libs/zlib:0= )
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPEND="${COMMON_DEPEND}
|
||||||
|
virtual/mta
|
||||||
|
fpm? (
|
||||||
|
selinux? ( sec-policy/selinux-phpfpm )
|
||||||
|
systemd? ( sys-apps/systemd ) )"
|
||||||
|
|
||||||
|
# Bison isn't actually needed when building from a release tarball
|
||||||
|
# However, the configure script will warn if it's absent or if you
|
||||||
|
# have an incompatible version installed. See bug 593278.
|
||||||
|
DEPEND="${COMMON_DEPEND}
|
||||||
|
app-arch/xz-utils
|
||||||
|
>=sys-devel/bison-3.0.1"
|
||||||
|
|
||||||
|
# Without USE=readline or libedit, the interactive "php -a" CLI will hang.
|
||||||
|
REQUIRED_USE="
|
||||||
|
|| ( cli cgi fpm apache2 embed phpdbg )
|
||||||
|
cli? ( ^^ ( readline libedit ) )
|
||||||
|
truetype? ( gd zlib )
|
||||||
|
webp? ( gd zlib )
|
||||||
|
cjk? ( gd zlib )
|
||||||
|
exif? ( gd zlib )
|
||||||
|
xpm? ( gd zlib )
|
||||||
|
gd? ( zlib )
|
||||||
|
simplexml? ( xml )
|
||||||
|
soap? ( xml )
|
||||||
|
wddx? ( xml )
|
||||||
|
xmlrpc? ( || ( xml iconv ) )
|
||||||
|
xmlreader? ( xml )
|
||||||
|
xslt? ( xml )
|
||||||
|
ldap-sasl? ( ldap )
|
||||||
|
mhash? ( hash )
|
||||||
|
phar? ( hash )
|
||||||
|
qdbm? ( !gdbm )
|
||||||
|
readline? ( !libedit )
|
||||||
|
recode? ( !imap !mysqli !mysql )
|
||||||
|
session-mm? ( session !threads )
|
||||||
|
mysql? ( hash || ( mysqli pdo ) )
|
||||||
|
mysqli? ( hash )
|
||||||
|
zip-encryption? ( zip )
|
||||||
|
"
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}/php-freetype-2.9.1.patch"
|
||||||
|
"${FILESDIR}/php-7.1.25-intl-detect-icu-via-pkg-config.patch"
|
||||||
|
"${FILESDIR}/php-7.2.13-intl-use-icu-namespace.patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
PHP_MV="$(ver_cut 1)"
|
||||||
|
|
||||||
|
php_install_ini() {
|
||||||
|
local phpsapi="${1}"
|
||||||
|
|
||||||
|
# work out where we are installing the ini file
|
||||||
|
php_set_ini_dir "${phpsapi}"
|
||||||
|
|
||||||
|
# Always install the production INI file, bug 611214.
|
||||||
|
local phpinisrc="php.ini-production-${phpsapi}"
|
||||||
|
cp php.ini-production "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# default to /tmp for save_path, bug #282768
|
||||||
|
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the extension dir
|
||||||
|
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" \
|
||||||
|
-i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
# Set the include path to point to where we want to find PEAR packages
|
||||||
|
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}" || die
|
||||||
|
|
||||||
|
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
newins "${phpinisrc}" php.ini
|
||||||
|
|
||||||
|
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
elog
|
||||||
|
|
||||||
|
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||||
|
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||||
|
|
||||||
|
if use opcache; then
|
||||||
|
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||||
|
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> \
|
||||||
|
"${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||||
|
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" \
|
||||||
|
"${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# SAPI-specific handling
|
||||||
|
if [[ "${sapi}" == "fpm" ]] ; then
|
||||||
|
einfo "Installing FPM config files php-fpm.conf and www.conf"
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||||
|
doins sapi/fpm/php-fpm.conf
|
||||||
|
insinto "${PHP_INI_DIR#${EPREFIX}}/fpm.d"
|
||||||
|
doins sapi/fpm/www.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
dodoc php.ini-{development,production}
|
||||||
|
}
|
||||||
|
|
||||||
|
php_set_ini_dir() {
|
||||||
|
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||||
|
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||||
|
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
|
||||||
|
# In php-7.x, the FPM pool configuration files have been split off
|
||||||
|
# of the main config. By default the pool config files go in
|
||||||
|
# e.g. /etc/php-fpm.d, which isn't slotted. So here we move the
|
||||||
|
# include directory to a subdirectory "fpm.d" of $PHP_INI_DIR. Later
|
||||||
|
# we'll install the pool configuration file "www.conf" there.
|
||||||
|
php_set_ini_dir fpm
|
||||||
|
sed -i "s~^include=.*$~include=${PHP_INI_DIR}/fpm.d/*.conf~" \
|
||||||
|
sapi/fpm/php-fpm.conf.in \
|
||||||
|
|| die 'failed to move the include directory in php-fpm.conf'
|
||||||
|
|
||||||
|
# Bug 669566 - necessary so that build tools are updated for commands like pecl
|
||||||
|
# Force rebuilding aclocal.m4
|
||||||
|
rm -f aclocal.m4 || die "failed to remove aclocal.m4 in src_prepare"
|
||||||
|
eautoreconf
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||||
|
|
||||||
|
# The php-fpm config file wants localstatedir to be ${EPREFIX}/var
|
||||||
|
# and not the Gentoo default ${EPREFIX}/var/lib. See bug 572002.
|
||||||
|
local our_conf=(
|
||||||
|
--prefix="${PHP_DESTDIR}"
|
||||||
|
--mandir="${PHP_DESTDIR}/man"
|
||||||
|
--infodir="${PHP_DESTDIR}/info"
|
||||||
|
--libdir="${PHP_DESTDIR}/lib"
|
||||||
|
--with-libdir="$(get_libdir)"
|
||||||
|
--localstatedir="${EPREFIX}/var"
|
||||||
|
--without-pear
|
||||||
|
$(use_enable threads maintainer-zts)
|
||||||
|
)
|
||||||
|
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with argon2 password-argon2 "${EPREFIX}/usr")
|
||||||
|
$(use_enable bcmath bcmath)
|
||||||
|
$(use_with bzip2 bz2 "${EPREFIX}/usr")
|
||||||
|
$(use_enable calendar calendar)
|
||||||
|
$(use_enable coverage gcov)
|
||||||
|
$(use_enable ctype ctype)
|
||||||
|
$(use_with curl curl "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml dom)
|
||||||
|
$(use_with enchant enchant "${EPREFIX}/usr")
|
||||||
|
$(use_enable exif exif)
|
||||||
|
$(use_enable fileinfo fileinfo)
|
||||||
|
$(use_enable filter filter)
|
||||||
|
$(use_enable ftp ftp)
|
||||||
|
$(use_with nls gettext "${EPREFIX}/usr")
|
||||||
|
$(use_with gmp gmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable hash hash)
|
||||||
|
$(use_with mhash mhash "${EPREFIX}/usr")
|
||||||
|
$(use_with iconv iconv \
|
||||||
|
$(use elibc_glibc || use elibc_musl || use elibc_FreeBSD || echo "${EPREFIX}/usr"))
|
||||||
|
$(use_enable intl intl)
|
||||||
|
$(use_enable ipv6 ipv6)
|
||||||
|
$(use_enable json json)
|
||||||
|
$(use_with kerberos kerberos "${EPREFIX}/usr")
|
||||||
|
$(use_enable xml libxml)
|
||||||
|
$(use_with xml libxml-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable unicode mbstring)
|
||||||
|
$(use_with unicode onig "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl openssl-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable pcntl pcntl)
|
||||||
|
$(use_enable phar phar)
|
||||||
|
$(use_enable pdo pdo)
|
||||||
|
$(use_enable opcache opcache)
|
||||||
|
$(use_with postgres pgsql "${EPREFIX}/usr")
|
||||||
|
$(use_enable posix posix)
|
||||||
|
$(use_with spell pspell "${EPREFIX}/usr")
|
||||||
|
$(use_with recode recode "${EPREFIX}/usr")
|
||||||
|
$(use_enable simplexml simplexml)
|
||||||
|
$(use_enable sharedmem shmop)
|
||||||
|
$(use_with snmp snmp "${EPREFIX}/usr")
|
||||||
|
$(use_enable soap soap)
|
||||||
|
$(use_enable sockets sockets)
|
||||||
|
$(use_with sodium sodium "${EPREFIX}/usr")
|
||||||
|
$(use_with sqlite sqlite3 "${EPREFIX}/usr")
|
||||||
|
$(use_enable sysvipc sysvmsg)
|
||||||
|
$(use_enable sysvipc sysvsem)
|
||||||
|
$(use_enable sysvipc sysvshm)
|
||||||
|
$(use_with tidy tidy "${EPREFIX}/usr")
|
||||||
|
$(use_enable tokenizer tokenizer)
|
||||||
|
$(use_enable wddx wddx)
|
||||||
|
$(use_enable xml xml)
|
||||||
|
$(use_enable xmlreader xmlreader)
|
||||||
|
$(use_enable xmlwriter xmlwriter)
|
||||||
|
$(use_with xmlrpc xmlrpc)
|
||||||
|
$(use_with xslt xsl "${EPREFIX}/usr")
|
||||||
|
$(use_enable zip zip)
|
||||||
|
$(use_with zip-encryption libzip "${EPREFIX}/usr")
|
||||||
|
$(use_with zlib zlib "${EPREFIX}/usr")
|
||||||
|
$(use_enable debug debug)
|
||||||
|
)
|
||||||
|
|
||||||
|
# DBA support
|
||||||
|
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||||
|
|| use qdbm || use lmdb || use tokyocabinet ; then
|
||||||
|
our_conf+=( "--enable-dba${shared}" )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DBA drivers support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with cdb cdb)
|
||||||
|
$(use_with berkdb db4 "${EPREFIX}/usr")
|
||||||
|
$(use_enable flatfile flatfile)
|
||||||
|
$(use_with gdbm gdbm "${EPREFIX}/usr")
|
||||||
|
$(use_enable inifile inifile)
|
||||||
|
$(use_with qdbm qdbm "${EPREFIX}/usr")
|
||||||
|
$(use_with lmdb lmdb "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Support for the GD graphics library
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with truetype freetype-dir "${EPREFIX}/usr")
|
||||||
|
$(use_enable cjk gd-jis-conv)
|
||||||
|
$(use_with gd jpeg-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with gd png-dir "${EPREFIX}/usr")
|
||||||
|
$(use_with xpm xpm-dir "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
if use webp; then
|
||||||
|
our_conf+=( --with-webp-dir="${EPREFIX}/usr" )
|
||||||
|
fi
|
||||||
|
# enable gd last, so configure can pick up the previous settings
|
||||||
|
our_conf+=( $(use_with gd gd) )
|
||||||
|
|
||||||
|
# IMAP support
|
||||||
|
if use imap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with imap imap "${EPREFIX}/usr")
|
||||||
|
$(use_with ssl imap-ssl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Interbase/firebird support
|
||||||
|
our_conf+=( $(use_with firebird interbase "${EPREFIX}/usr") )
|
||||||
|
|
||||||
|
# LDAP support
|
||||||
|
if use ldap ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with ldap ldap "${EPREFIX}/usr")
|
||||||
|
$(use_with ldap-sasl ldap-sasl "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# MySQL support
|
||||||
|
local mysqllib="mysqlnd"
|
||||||
|
local mysqlilib="mysqlnd"
|
||||||
|
|
||||||
|
our_conf+=( $(use_with mysqli mysqli "${mysqlilib}") )
|
||||||
|
|
||||||
|
local mysqlsock="${EPREFIX}/var/run/mysqld/mysqld.sock"
|
||||||
|
if use mysql || use mysqli ; then
|
||||||
|
our_conf+=( $(use_with mysql mysql-sock "${mysqlsock}") )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ODBC support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with odbc unixODBC "${EPREFIX}/usr")
|
||||||
|
$(use_with iodbc iodbc "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Oracle support
|
||||||
|
our_conf+=( $(use_with oci8-instant-client oci8) )
|
||||||
|
|
||||||
|
# PDO support
|
||||||
|
if use pdo ; then
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with mssql pdo-dblib "${EPREFIX}/usr")
|
||||||
|
$(use_with mysql pdo-mysql "${mysqllib}")
|
||||||
|
$(use_with postgres pdo-pgsql)
|
||||||
|
$(use_with sqlite pdo-sqlite "${EPREFIX}/usr")
|
||||||
|
$(use_with firebird pdo-firebird "${EPREFIX}/usr")
|
||||||
|
$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")
|
||||||
|
$(use_with oci8-instant-client pdo-oci)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# readline/libedit support
|
||||||
|
our_conf+=(
|
||||||
|
$(use_with readline readline "${EPREFIX}/usr")
|
||||||
|
$(use_with libedit libedit "${EPREFIX}/usr")
|
||||||
|
)
|
||||||
|
|
||||||
|
# Session support
|
||||||
|
if use session ; then
|
||||||
|
our_conf+=( $(use_with session-mm mm "${EPREFIX}/usr") )
|
||||||
|
else
|
||||||
|
our_conf+=( $(use_enable session session) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use pic for shared modules such as apache2's mod_php
|
||||||
|
our_conf+=( --with-pic )
|
||||||
|
|
||||||
|
# we use the system copy of pcre
|
||||||
|
# --with-pcre-regex affects ext/pcre
|
||||||
|
# --with-pcre-dir affects ext/filter and ext/zip
|
||||||
|
# --with-pcre-valgrind cannot be enabled with system pcre
|
||||||
|
# Many arches don't support pcre-jit
|
||||||
|
our_conf+=(
|
||||||
|
--with-pcre-regex="${EPREFIX}/usr"
|
||||||
|
--with-pcre-dir="${EPREFIX}/usr"
|
||||||
|
--without-pcre-valgrind
|
||||||
|
--without-pcre-jit
|
||||||
|
)
|
||||||
|
|
||||||
|
# Catch CFLAGS problems
|
||||||
|
# Fixes bug #14067.
|
||||||
|
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||||
|
replace-cpu-flags "k6*" "i586"
|
||||||
|
|
||||||
|
# Cache the ./configure test results between SAPIs.
|
||||||
|
our_conf+=( --cache-file="${T}/config.cache" )
|
||||||
|
|
||||||
|
# Support user-passed configuration parameters
|
||||||
|
our_conf+=( ${EXTRA_ECONF:-} )
|
||||||
|
|
||||||
|
# Support the Apache2 extras, they must be set globally for all
|
||||||
|
# SAPIs to work correctly, especially for external PHP extensions
|
||||||
|
|
||||||
|
mkdir -p "${WORKDIR}/sapis-build" || die
|
||||||
|
for one_sapi in $SAPIS ; do
|
||||||
|
use "${one_sapi}" || continue
|
||||||
|
php_set_ini_dir "${one_sapi}"
|
||||||
|
|
||||||
|
# The BUILD_DIR variable is used to determine where to output
|
||||||
|
# the files that autotools creates. This was all originally
|
||||||
|
# based on the autotools-utils eclass.
|
||||||
|
BUILD_DIR="${WORKDIR}/sapis-build/${one_sapi}"
|
||||||
|
cp -a "${S}" "${BUILD_DIR}" || die
|
||||||
|
cd "${BUILD_DIR}" || die
|
||||||
|
|
||||||
|
local sapi_conf=(
|
||||||
|
--with-config-file-path="${PHP_INI_DIR}"
|
||||||
|
--with-config-file-scan-dir="${PHP_EXT_INI_DIR_ACTIVE}"
|
||||||
|
)
|
||||||
|
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
case "$sapi" in
|
||||||
|
cli|cgi|embed|fpm|phpdbg)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( "--enable-${sapi}" )
|
||||||
|
if [[ "fpm" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=(
|
||||||
|
$(use_with acl fpm-acl)
|
||||||
|
$(use_with systemd fpm-systemd)
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sapi_conf+=( "--disable-${sapi}" )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
apache2)
|
||||||
|
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||||
|
sapi_conf+=( --with-apxs2="${EPREFIX}/usr/bin/apxs" )
|
||||||
|
else
|
||||||
|
sapi_conf+=( --without-apxs2 )
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Construct the $myeconfargs array by concatenating $our_conf
|
||||||
|
# (the common args) and $sapi_conf (the SAPI-specific args).
|
||||||
|
local myeconfargs=( "${our_conf[@]}" )
|
||||||
|
myeconfargs+=( "${sapi_conf[@]}" )
|
||||||
|
|
||||||
|
pushd "${BUILD_DIR}" > /dev/null || die
|
||||||
|
econf "${myeconfargs[@]}"
|
||||||
|
popd > /dev/null || die
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# snmp seems to run during src_compile, too (bug #324739)
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
addpredict /var/lib/net-snmp/mib_indexes #nowarn
|
||||||
|
|
||||||
|
for sapi in ${SAPIS} ; do
|
||||||
|
if use "${sapi}"; then
|
||||||
|
cd "${WORKDIR}/sapis-build/$sapi" || \
|
||||||
|
die "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||||
|
emake
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
# see bug #324739 for what happens when we don't have that
|
||||||
|
addpredict /usr/share/snmp/mibs/.index #nowarn
|
||||||
|
|
||||||
|
# grab the first SAPI that got built and install common files from there
|
||||||
|
local first_sapi=""
|
||||||
|
for sapi in $SAPIS ; do
|
||||||
|
if use $sapi ; then
|
||||||
|
first_sapi=$sapi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Makefile forgets to create this before trying to write to it...
|
||||||
|
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||||
|
|
||||||
|
# Install php environment (without any sapis)
|
||||||
|
cd "${WORKDIR}/sapis-build/$first_sapi" || die
|
||||||
|
emake INSTALL_ROOT="${D}" \
|
||||||
|
install-build install-headers install-programs
|
||||||
|
|
||||||
|
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||||
|
|
||||||
|
# Create the directory where we'll put version-specific php scripts
|
||||||
|
keepdir "/usr/share/php${PHP_MV}"
|
||||||
|
|
||||||
|
local sapi="", file=""
|
||||||
|
local sapi_list=""
|
||||||
|
|
||||||
|
for sapi in ${SAPIS}; do
|
||||||
|
if use "${sapi}" ; then
|
||||||
|
einfo "Installing SAPI: ${sapi}"
|
||||||
|
cd "${WORKDIR}/sapis-build/${sapi}" || die
|
||||||
|
|
||||||
|
if [[ "${sapi}" == "apache2" ]] ; then
|
||||||
|
# We're specifically not using emake install-sapi as libtool
|
||||||
|
# may cause unnecessary relink failures (see bug #351266)
|
||||||
|
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||||
|
newins ".libs/libphp${PHP_MV}$(get_libname)" \
|
||||||
|
"libphp${PHP_MV}$(get_libname)"
|
||||||
|
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||||
|
else
|
||||||
|
# needed each time, php_install_ini would reset it
|
||||||
|
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
into "${dest}"
|
||||||
|
case "$sapi" in
|
||||||
|
cli)
|
||||||
|
source="sapi/cli/php"
|
||||||
|
;;
|
||||||
|
cgi)
|
||||||
|
source="sapi/cgi/php-cgi"
|
||||||
|
;;
|
||||||
|
fpm)
|
||||||
|
source="sapi/fpm/php-fpm"
|
||||||
|
;;
|
||||||
|
embed)
|
||||||
|
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||||
|
;;
|
||||||
|
phpdbg)
|
||||||
|
source="sapi/phpdbg/phpdbg"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
die "unhandled sapi in src_install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||||
|
dolib.so "${source}"
|
||||||
|
else
|
||||||
|
dobin "${source}"
|
||||||
|
local name="$(basename ${source})"
|
||||||
|
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
php_install_ini "${sapi}"
|
||||||
|
|
||||||
|
# construct correct SAPI string for php-config
|
||||||
|
# thanks to ferringb for the bash voodoo
|
||||||
|
if [[ "${sapi}" == "apache2" ]]; then
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||||
|
else
|
||||||
|
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Installing opcache module
|
||||||
|
if use opcache ; then
|
||||||
|
into "${PHP_DESTDIR#${EPREFIX}}"
|
||||||
|
dolib.so "modules/opcache$(get_libname)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install env.d files
|
||||||
|
newenvd "${FILESDIR}/20php5-envd" "20php${SLOT}"
|
||||||
|
sed -e "s|/lib/|/$(get_libdir)/|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
sed -e "s|php5|php${SLOT}|g" -i "${ED}/etc/env.d/20php${SLOT}" || die
|
||||||
|
|
||||||
|
# set php-config variable correctly (bug #278439)
|
||||||
|
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||||
|
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config" || die
|
||||||
|
|
||||||
|
if use fpm ; then
|
||||||
|
if use systemd; then
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
else
|
||||||
|
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" \
|
||||||
|
"php-fpm@${SLOT}.service"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||||
|
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||||
|
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||||
|
ewarn "Test phase requires USE=cli, skipping"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi" ]] ; then
|
||||||
|
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis-build/cgi/sapi/cgi/php-cgi"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg" ]] ; then
|
||||||
|
export TEST_PHPDBG_EXECUTABLE="${WORKDIR}/sapis-build/phpdbg/sapi/phpdbg/phpdbg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d \
|
||||||
|
"session.save_path=${T}" \
|
||||||
|
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d \
|
||||||
|
"session.save_path=${T}"
|
||||||
|
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
mv "${name}.out" "${name}.out.orig" 2>/dev/null || die
|
||||||
|
done
|
||||||
|
|
||||||
|
local failed="$(find -name '*.out')"
|
||||||
|
if [[ ${failed} != "" ]] ; then
|
||||||
|
ewarn "The following test cases failed unexpectedly:"
|
||||||
|
for name in ${failed}; do
|
||||||
|
ewarn " ${name/.out/}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "No unexpected test failures, all fine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||||
|
local passed=""
|
||||||
|
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||||
|
[[ -f "${name}.diff" ]] && continue
|
||||||
|
passed="${passed} ${name}"
|
||||||
|
done
|
||||||
|
if [[ ${passed} != "" ]] ; then
|
||||||
|
einfo "The following test cases passed unexpectedly:"
|
||||||
|
for name in ${passed}; do
|
||||||
|
ewarn " ${passed}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
einfo "None of the known-to-fail tests passed, all fine"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
# Output some general info to the user
|
||||||
|
if use apache2 ; then
|
||||||
|
elog
|
||||||
|
elog "To enable PHP in apache, you will need to add \"-D PHP\" to"
|
||||||
|
elog "your apache2 command. OpenRC users can append that string to"
|
||||||
|
elog "APACHE2_OPTS in /etc/conf.d/apache2."
|
||||||
|
elog
|
||||||
|
elog "The apache module configuration file 70_mod_php.conf is"
|
||||||
|
elog "provided (and maintained) by eselect-php."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlinks for php
|
||||||
|
for m in ${SAPIS}; do
|
||||||
|
[[ ${m} == 'embed' ]] && continue;
|
||||||
|
if use $m ; then
|
||||||
|
local ci=$(eselect php show $m)
|
||||||
|
if [[ -z $ci ]]; then
|
||||||
|
eselect php set $m php${SLOT} || die
|
||||||
|
einfo "Switched ${m} to use php:${SLOT}"
|
||||||
|
einfo
|
||||||
|
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||||
|
elog "To switch $m to use php:${SLOT}, run"
|
||||||
|
elog " eselect php set $m php${SLOT}"
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove dead symlinks for SAPIs that were just disabled. For
|
||||||
|
# example, if the user has the cgi SAPI enabled, then he has an
|
||||||
|
# eselect-php symlink for it. If he later reinstalls PHP with
|
||||||
|
# USE="-cgi", that symlink will break. This call to eselect is
|
||||||
|
# supposed to remove that dead link per bug 572436.
|
||||||
|
eselect php cleanup || die
|
||||||
|
|
||||||
|
if ! has "php${SLOT/./-}" ${PHP_TARGETS}; then
|
||||||
|
elog "To build extensions for this version of PHP, you will need to"
|
||||||
|
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||||
|
elog
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warn about the removal of PHP_INI_VERSION if the user has it set.
|
||||||
|
if [[ -n "${PHP_INI_VERSION}" ]]; then
|
||||||
|
ewarn 'The PHP_INI_VERSION variable has been phased out. You may'
|
||||||
|
ewarn 'remove it from your configuration at your convenience. See'
|
||||||
|
ewarn
|
||||||
|
ewarn ' https://bugs.gentoo.org/611214'
|
||||||
|
ewarn
|
||||||
|
ewarn 'for more information.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
elog "For details on how version slotting works, please see"
|
||||||
|
elog "the wiki:"
|
||||||
|
elog
|
||||||
|
elog " https://wiki.gentoo.org/wiki/PHP"
|
||||||
|
elog
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postrm() {
|
||||||
|
# This serves two purposes. First, if we have just removed the last
|
||||||
|
# installed version of PHP, then this will remove any dead symlinks
|
||||||
|
# belonging to eselect-php. Second, if a user upgrades slots from
|
||||||
|
# (say) 5.6 to 7.0 and depcleans the old slot, then this will update
|
||||||
|
# his existing symlinks to point to the new 7.0 installation. The
|
||||||
|
# latter is bug 432962.
|
||||||
|
#
|
||||||
|
# Note: the eselect-php package may not be installed at this point,
|
||||||
|
# so we can't die() if this command fails.
|
||||||
|
eselect php cleanup
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
@ -1,4 +1,2 @@
|
|||||||
DIST neovim-python-client-0.1.13.tar.gz 41413 BLAKE2B 819c3e7763cfb357d45130928dab23ad149a5f9d8efb0df8699a805bc394662447837ad3edc869705a95d74a37f2eec4f155212da918ac779d389c150a0d7189 SHA512 ecef42601632551c98f8de019bfdf4dbff3ce1f0e1b6943b78a506b710e5810f6a7e611adc09435992b97288ff365a416870a74202a5c68236b5daeb51d15c8b
|
|
||||||
DIST neovim-python-client-0.2.1.tar.gz 41971 BLAKE2B 9ebff937e08963cb8c764c4dcfcef8b6e28e8d0219635f9602ccc77b0bf4412a797de71fbf149bcaafe85bd1122a0d3cec1d8bfa81217c8c2d5a89bc1772c572 SHA512 710be7f5355077fa1eae256c541a06d475902492a19638c5786e25aafb9181f40afcc8df70aca0da15a569a9d6b095ab7bd8008e4f947725cf081954fb7c042e
|
|
||||||
DIST neovim-python-client-0.2.4.tar.gz 47216 BLAKE2B 029bc18936fcd23518ee0b80e5396b2ad9477a4395c27ca5d7e30f897599b47d68529cfe0febafae321a2dc9bb8dfd7cdcdde97225e166bae0565bd301598a4b SHA512 38dcd146060d1942d5ab58ab036f39667b908719b1fc48f79c0bd2b82cf458c3ef6750ccf6d0e4b5bdb71b42a9e5666c008f03a46b07801f2ea8435dec8c716a
|
|
||||||
DIST neovim-python-client-0.2.6.tar.gz 50170 BLAKE2B d241ae0019bb8a4f08abf11866d7c964425d96756452e7bafb95fbce1795657c6911cf6bb706f5efa46ac3f5bd2c4af23ade9b9677d8f1f94905d72a39ddfde5 SHA512 a493c1e6be6a196d35e69e6b6b6a7752e939a254ed423079468c0e13ce40c2646ee8d65482648ea37a9d9c53b4f2c50cdd5e6c8dc130e63a7e40f424c4f4a9c0
|
DIST neovim-python-client-0.2.6.tar.gz 50170 BLAKE2B d241ae0019bb8a4f08abf11866d7c964425d96756452e7bafb95fbce1795657c6911cf6bb706f5efa46ac3f5bd2c4af23ade9b9677d8f1f94905d72a39ddfde5 SHA512 a493c1e6be6a196d35e69e6b6b6a7752e939a254ed423079468c0e13ce40c2646ee8d65482648ea37a9d9c53b4f2c50cdd5e6c8dc130e63a7e40f424c4f4a9c0
|
||||||
|
DIST neovim-python-client-0.3.1.tar.gz 51626 BLAKE2B 80e68d02d41c7891fb88e9386866f87a1c78acc9e279de4ce4c7022333f8da3b68ffe7c598c84ff9c6386458639b6ffb4aecbfe72288866dc147ffc6197e94e2 SHA512 9c1599aabce9f0e1133364f8e91dd1b57cee107a11d400f530218ec7ad157c2f58134c1e7e8fc27649b4d8953e27c51bf6e4f0e7565d8c3dab94788759eea229
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
# Copyright 1999-2018 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
PYTHON_COMPAT=( python{2_7,3_{4,5,6}} )
|
|
||||||
inherit distutils-r1
|
|
||||||
|
|
||||||
DESCRIPTION="Python client for Neovim"
|
|
||||||
HOMEPAGE="https://github.com/neovim/python-client"
|
|
||||||
SRC_URI="https://github.com/neovim/python-client/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
|
||||||
|
|
||||||
LICENSE="Apache-2.0"
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~amd64 ~x86"
|
|
||||||
IUSE="test"
|
|
||||||
|
|
||||||
COMMON_DEPEND="
|
|
||||||
<dev-python/msgpack-0.5.2:0[${PYTHON_USEDEP}]
|
|
||||||
>=dev-python/msgpack-0.4.0:0[${PYTHON_USEDEP}]
|
|
||||||
virtual/python-greenlet[${PYTHON_USEDEP}]
|
|
||||||
$(python_gen_cond_dep 'dev-python/trollius[${PYTHON_USEDEP}]' python2_7)"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
${COMMON_DEPEND}
|
|
||||||
>=app-editors/neovim-0.1.6"
|
|
||||||
|
|
||||||
DEPEND="
|
|
||||||
${COMMON_DEPEND}
|
|
||||||
test? (
|
|
||||||
${RDEPEND}
|
|
||||||
dev-python/nose[${PYTHON_USEDEP}]
|
|
||||||
)"
|
|
||||||
|
|
||||||
S="${WORKDIR}/python-client-${PV}"
|
|
||||||
|
|
||||||
python_test() {
|
|
||||||
nosetests -d -v || die
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
# Copyright 1999-2018 Gentoo Foundation
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=6
|
|
||||||
|
|
||||||
PYTHON_COMPAT=( python{2_7,3_{4,5,6}} )
|
|
||||||
inherit distutils-r1
|
|
||||||
|
|
||||||
DESCRIPTION="Python client for Neovim"
|
|
||||||
HOMEPAGE="https://github.com/neovim/python-client"
|
|
||||||
SRC_URI="https://github.com/neovim/python-client/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
|
||||||
|
|
||||||
LICENSE="Apache-2.0"
|
|
||||||
SLOT="0"
|
|
||||||
KEYWORDS="~amd64 ~x86"
|
|
||||||
|
|
||||||
DEPEND="
|
|
||||||
>=dev-python/msgpack-0.5.2[${PYTHON_USEDEP}]
|
|
||||||
virtual/python-greenlet[${PYTHON_USEDEP}]
|
|
||||||
$(python_gen_cond_dep 'dev-python/trollius[${PYTHON_USEDEP}]' python2_7)"
|
|
||||||
|
|
||||||
RDEPEND="
|
|
||||||
${DEPEND}
|
|
||||||
>=app-editors/neovim-0.2.1"
|
|
||||||
|
|
||||||
S="${WORKDIR}/python-client-${PV}"
|
|
||||||
|
|
||||||
python_prepare_all() {
|
|
||||||
# allow useage of renamed msgpack
|
|
||||||
sed -i '/^msgpack/d' setup.py || die
|
|
||||||
distutils-r1_python_prepare_all
|
|
||||||
}
|
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
DIST guile-gcrypt-0.1.0.tar.gz 47119 BLAKE2B f0d135ae0eeecd324d51ebfcb2fd9c131e57c9d822f0729e0cddde05fe4c4df6d854e1394a4ef5361e046f10279e60a10c781e0df2432ec4034d62631a0c2619 SHA512 90934b2347cc94a59537e34b07608a8678ed3af4ce62b42f0659eb3bca4290a2707b2c166a50a16422cb17d03d2a1a3fa59a203404c1b05b0d02cb753f367c52
|
@ -0,0 +1,30 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=7
|
||||||
|
|
||||||
|
inherit autotools
|
||||||
|
|
||||||
|
DESCRIPTION="Guile bindings of libgcrypt"
|
||||||
|
HOMEPAGE="https://notabug.org/cwebber/guile-gcrypt"
|
||||||
|
SRC_URI="https://notabug.org/cwebber/guile-gcrypt/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||||
|
|
||||||
|
LICENSE="GPL-3"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="~amd64 ~x86"
|
||||||
|
IUSE=""
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
>=dev-scheme/guile-2.0.11:=
|
||||||
|
dev-libs/libgcrypt:0=
|
||||||
|
"
|
||||||
|
DEPEND="${RDEPEND}"
|
||||||
|
|
||||||
|
S=${WORKDIR}/${PN}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
|
||||||
|
# upstream tag on top of source tree. has no autogenerated files
|
||||||
|
eautoreconf
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||||
|
<pkgmetadata>
|
||||||
|
<maintainer type="person">
|
||||||
|
<email>slyfox@gentoo.org</email>
|
||||||
|
</maintainer>
|
||||||
|
</pkgmetadata>
|
Binary file not shown.
@ -1,3 +1,4 @@
|
|||||||
DIST ShellCheck-0.4.6.tar.gz 116618 BLAKE2B 67cf8e882e95eaedfbb46e01656889e200b311e3701301da1df02add4c6f7446d275a1b132d6d7e1da0e4eb49205138fffce8d8cb0a2b91045f72cc7f006ca99 SHA512 b053a7f581d73f1e5be51046f2fd77f6e7452acecf841321ef363156a5f72d98c13a723885d1888ab366550625e05396ca207925539fec1d70a00212af920ca5
|
DIST ShellCheck-0.4.6.tar.gz 116618 BLAKE2B 67cf8e882e95eaedfbb46e01656889e200b311e3701301da1df02add4c6f7446d275a1b132d6d7e1da0e4eb49205138fffce8d8cb0a2b91045f72cc7f006ca99 SHA512 b053a7f581d73f1e5be51046f2fd77f6e7452acecf841321ef363156a5f72d98c13a723885d1888ab366550625e05396ca207925539fec1d70a00212af920ca5
|
||||||
DIST ShellCheck-0.4.7.tar.gz 126593 BLAKE2B cbb925c4760a3744381dbee293d5e28ce429a9c4244eb1fa5af71ad8ba2cbdd86a721bbc2b9202c7aecf4ad70025bacb13e696c4731cbfaba22511d773013d6b SHA512 bb9c79911701b3857d29fd63588115888f4d2b1d224066bb944ca00d29d973195ad1f4b1df8e2746fd0666f7438f46abc384f7f915c152f46fcd332163736792
|
DIST ShellCheck-0.4.7.tar.gz 126593 BLAKE2B cbb925c4760a3744381dbee293d5e28ce429a9c4244eb1fa5af71ad8ba2cbdd86a721bbc2b9202c7aecf4ad70025bacb13e696c4731cbfaba22511d773013d6b SHA512 bb9c79911701b3857d29fd63588115888f4d2b1d224066bb944ca00d29d973195ad1f4b1df8e2746fd0666f7438f46abc384f7f915c152f46fcd332163736792
|
||||||
DIST ShellCheck-0.5.0.tar.gz 133265 BLAKE2B 703e3d994e6302d7bc6124ae064cbc5893c5119918a9a9b6cbda2c0415600b95545146061230b2e6ab07b6b2383a86b9bd3f153643c30c3f765a3424a1cd4bc0 SHA512 3b4b097f507c8910f5da1a739138511b9c30c156667c0887447043a7d0c3c371768953d7039803356f28e863266d3a34b5b1689889f3e524a3768e4d3223ce7c
|
DIST ShellCheck-0.5.0.tar.gz 133265 BLAKE2B 703e3d994e6302d7bc6124ae064cbc5893c5119918a9a9b6cbda2c0415600b95545146061230b2e6ab07b6b2383a86b9bd3f153643c30c3f765a3424a1cd4bc0 SHA512 3b4b097f507c8910f5da1a739138511b9c30c156667c0887447043a7d0c3c371768953d7039803356f28e863266d3a34b5b1689889f3e524a3768e4d3223ce7c
|
||||||
|
DIST ShellCheck-0.6.0.tar.gz 140211 BLAKE2B 5a103bd74e76905b64a882542d1f2bf5cac6b2ec94e9b0f55fdd052f5fd1fe17f9efc02ef9182e7e5965765b428b974bf94fa50d701396fef77bcbfe6185402e SHA512 51c2cc9cfd2f8a145095873f9b19d4fdd67a21eedab4ac2dbe5f43789fd0937a44bdc8480b2d0cceb5bc3802a8243dd3b701a07f1f6b5460291272ee453c7c5f
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
# Copyright 1999-2018 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=6
|
||||||
|
|
||||||
|
# ebuild generated by hackport 0.5.5
|
||||||
|
|
||||||
|
CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
|
||||||
|
inherit haskell-cabal
|
||||||
|
|
||||||
|
MY_PN="ShellCheck"
|
||||||
|
MY_P="${MY_PN}-${PV}"
|
||||||
|
|
||||||
|
DESCRIPTION="Shell script analysis tool"
|
||||||
|
HOMEPAGE="https://www.shellcheck.net/"
|
||||||
|
SRC_URI="mirror://hackage/packages/archive/${MY_PN}/${PV}/${MY_P}.tar.gz"
|
||||||
|
|
||||||
|
LICENSE="GPL-3"
|
||||||
|
SLOT="0/${PV}"
|
||||||
|
KEYWORDS="~amd64 ~x86"
|
||||||
|
IUSE=""
|
||||||
|
|
||||||
|
RDEPEND="dev-haskell/aeson:=[profile?]
|
||||||
|
>=dev-haskell/mtl-2.2.1:=[profile?]
|
||||||
|
>=dev-haskell/parsec-3.0:=[profile?]
|
||||||
|
>=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?]
|
||||||
|
dev-haskell/regex-tdfa:=[profile?]
|
||||||
|
dev-haskell/semigroups:=[profile?]
|
||||||
|
>=dev-lang/ghc-7.8.2:=
|
||||||
|
"
|
||||||
|
DEPEND="${RDEPEND}
|
||||||
|
>=dev-haskell/cabal-1.18.1.3 <dev-haskell/cabal-2.5
|
||||||
|
"
|
||||||
|
|
||||||
|
S="${WORKDIR}/${MY_P}"
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
cabal_src_install
|
||||||
|
doman "${PN}.1"
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
@ -1,3 +1,3 @@
|
|||||||
DIST spotify-client_1.0.72.117.g6bd7cc73-35_i386.deb 95135550 BLAKE2B ad4587dd6b3c64a0398e0790203a7826e290a27542fa39ebbd6c7198d8ad1fd3fb06e8b030b64e1e61e0624ef20aafda08189266486cd073cb779ebff62ef502 SHA512 51d60f7592e5f31ea4b7e67736a85271cb48d4108459630da61c4ab67d2a470038240c1d6ff577280cb4498cf44f14d7bc7e0312f63d34265bcd1e70cd13142f
|
DIST spotify-client_1.0.72.117.g6bd7cc73-35_i386.deb 95135550 BLAKE2B ad4587dd6b3c64a0398e0790203a7826e290a27542fa39ebbd6c7198d8ad1fd3fb06e8b030b64e1e61e0624ef20aafda08189266486cd073cb779ebff62ef502 SHA512 51d60f7592e5f31ea4b7e67736a85271cb48d4108459630da61c4ab67d2a470038240c1d6ff577280cb4498cf44f14d7bc7e0312f63d34265bcd1e70cd13142f
|
||||||
DIST spotify-client_1.0.80.480.g51b03ac3-13_amd64.deb 97542898 BLAKE2B a89f3f607c9fb03327886fc1b6eb8d433b32913aa7ff32e95f626a8ef7710c4d6102721b76e9a83f1342d1ac6f6941d85376b4cb878cf641f42f3c3756582eb9 SHA512 a46b1d28e6c40dbe9a86a38794186f2cdf31341fff953eaa5a5fdbb37c27c00ffe14a918b2552df0996d2842f009e6700bf8683e0667fc671dfd5b343251f20e
|
DIST spotify-client_1.0.80.480.g51b03ac3-13_amd64.deb 97542898 BLAKE2B a89f3f607c9fb03327886fc1b6eb8d433b32913aa7ff32e95f626a8ef7710c4d6102721b76e9a83f1342d1ac6f6941d85376b4cb878cf641f42f3c3756582eb9 SHA512 a46b1d28e6c40dbe9a86a38794186f2cdf31341fff953eaa5a5fdbb37c27c00ffe14a918b2552df0996d2842f009e6700bf8683e0667fc671dfd5b343251f20e
|
||||||
DIST spotify-client_1.0.92.390.g2ce5ec7d-18_amd64.deb 102410368 BLAKE2B df78d6db545a86066425340f0afd77a3492a2d1debeaacc49e01a0961182be9118c210320214c92a2780f2b2f86de88f1018f293ac608bdeb94ee9717e503c0b SHA512 590cb5d599e6e8a2cfa03fa0bbc34f90c54daed33fa013eb71b6152028296d26b86a75f53f9853cc8678474cf12b7265e6b37cb28a3da8ce9cbc2432ef50794b
|
DIST spotify-client_1.0.94.262.g3d5c231c-9_amd64.deb 104191924 BLAKE2B 75d5067fee6333897e33dd43f3bea11f0811df30f9d3d35a537298675516e6e9c8af609460daaf2a79be91133b45a4b76c9539abee9cdbc04362caeefbbea27a SHA512 e6aa650a207fb636cd789055d4b17bc9c0fec1f6421877e4e80d3d5239f1a1bb881c5bfa4788a6cbe7748175e6c731af66a3395d2089d2d9a94dabfe5d07b09f
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1 +1 @@
|
|||||||
Thu, 06 Dec 2018 22:08:37 +0000
|
Fri, 07 Dec 2018 05:38:36 +0000
|
||||||
|
@ -1 +1 @@
|
|||||||
Thu, 06 Dec 2018 22:08:37 +0000
|
Fri, 07 Dec 2018 05:38:36 +0000
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,14 +1,14 @@
|
|||||||
DEFINED_PHASES=compile configure install prepare test
|
DEFINED_PHASES=compile configure install prepare test
|
||||||
DEPEND=app-misc/jq >=dev-python/pyyaml-3.11[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] test? ( dev-python/coverage[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/flake8[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/toml[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/wheel[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/xmltodict[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
DEPEND=app-misc/jq >=dev-python/pyyaml-3.11[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/xmltodict[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] test? ( dev-python/coverage[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/flake8[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/toml[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/wheel[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
||||||
DESCRIPTION=Command-line YAML processor - jq wrapper for YAML documents
|
DESCRIPTION=Command-line YAML processor - jq wrapper for YAML documents
|
||||||
EAPI=6
|
EAPI=6
|
||||||
HOMEPAGE=https://yq.readthedocs.io/ https://github.com/kislyuk/yq/ https://pypi.org/project/yq/
|
HOMEPAGE=https://yq.readthedocs.io/ https://github.com/kislyuk/yq/ https://pypi.org/project/yq/
|
||||||
IUSE=test python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6
|
IUSE=test python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6
|
||||||
KEYWORDS=~amd64 ~x86
|
KEYWORDS=~amd64 ~x86
|
||||||
LICENSE=Apache-2.0
|
LICENSE=Apache-2.0
|
||||||
RDEPEND=app-misc/jq >=dev-python/pyyaml-3.11[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
RDEPEND=app-misc/jq >=dev-python/pyyaml-3.11[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] dev-python/xmltodict[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
||||||
REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 )
|
REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 )
|
||||||
SLOT=0
|
SLOT=0
|
||||||
SRC_URI=mirror://pypi/y/yq/yq-2.7.1.tar.gz
|
SRC_URI=mirror://pypi/y/yq/yq-2.7.1.tar.gz
|
||||||
_eclasses_=distutils-r1 71a5ee567fb298e553ce8d1319279151 multibuild 40fe59465edacd730c644ec2bc197809 multilib b2f01ad412baf81650c23fcf0975fa33 multiprocessing cac3169468f893670dac3e7cb940e045 python-r1 ce1cd23cfdc1848e8e32743efe34f299 python-utils-r1 12114a2a9aab35b93efc037a196b3234 toolchain-funcs f164325a2cdb5b3ea39311d483988861 xdg-utils 93b2dfbb00a09161e1e7f6360c0f7f6b
|
_eclasses_=distutils-r1 71a5ee567fb298e553ce8d1319279151 multibuild 40fe59465edacd730c644ec2bc197809 multilib b2f01ad412baf81650c23fcf0975fa33 multiprocessing cac3169468f893670dac3e7cb940e045 python-r1 ce1cd23cfdc1848e8e32743efe34f299 python-utils-r1 12114a2a9aab35b93efc037a196b3234 toolchain-funcs f164325a2cdb5b3ea39311d483988861 xdg-utils 93b2dfbb00a09161e1e7f6360c0f7f6b
|
||||||
_md5_=f61f0ada03b2d294480819528002da6f
|
_md5_=cf2e9ea8ec780a4d074cd55541952baa
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,15 @@
|
|||||||
|
BDEPEND=>=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
|
||||||
|
DEFINED_PHASES=compile configure install postinst postrm prepare test
|
||||||
|
DEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) libmysqlclient? ( mysql? ( virtual/libmysqlclient:= ) mysqli? ( virtual/libmysqlclient:= ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) unicode? ( dev-libs/oniguruma:= ) vpx? ( media-libs/libvpx:0= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) app-arch/xz-utils >=sys-devel/bison-3.0.1 sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18
|
||||||
|
DESCRIPTION=The PHP language runtime engine
|
||||||
|
EAPI=7
|
||||||
|
HOMEPAGE=https://secure.php.net/
|
||||||
|
IUSE=embed +cli cgi fpm apache2 threads acl bcmath berkdb bzip2 calendar cdb cjk coverage crypt +ctype curl debug enchant exif +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl mhash mssql mysql libmysqlclient mysqli nls oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm readline recode selinux +session sharedmem +simplexml snmp soap sockets spell sqlite ssl sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx +xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib
|
||||||
|
KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
|
||||||
|
LICENSE=PHP-3.01 BSD Zend-2.0 bcmath? ( LGPL-2.1+ ) fpm? ( BSD-2 ) gd? ( gd ) unicode? ( BSD-2 LGPL-2.1 )
|
||||||
|
RDEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) libmysqlclient? ( mysql? ( virtual/libmysqlclient:= ) mysqli? ( virtual/libmysqlclient:= ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) unicode? ( dev-libs/oniguruma:= ) vpx? ( media-libs/libvpx:0= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) systemd? ( sys-apps/systemd ) )
|
||||||
|
REQUIRED_USE=|| ( cli cgi fpm apache2 embed ) cli? ( ^^ ( readline libedit ) ) truetype? ( gd zlib ) vpx? ( gd zlib ) cjk? ( gd zlib ) exif? ( gd zlib ) xpm? ( gd zlib ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xslt? ( xml ) ldap-sasl? ( ldap ) mhash? ( hash ) phar? ( hash ) recode? ( !imap !mysql !mysqli !libmysqlclient ) libmysqlclient? ( || ( mysql mysqli pdo ) ) qdbm? ( !gdbm ) readline? ( !libedit ) sharedmem? ( !threads )
|
||||||
|
SLOT=5.6
|
||||||
|
SRC_URI=https://php.net/distributions/php-5.6.39.tar.xz https://salsa.debian.org/php-team/php/raw/8149a436/debian/patches/0055-Use-OpenSSL-1.1-compatibility-patch-when-built-with-.patch?inline=false -> php-5.6-openssl-1.1-compatibility.patch
|
||||||
|
_eclasses_=autotools 1bf086cdd7356f5c9a4acd9727bd2065 eutils 6e6c2737b59a4b982de6fb3ecefd87f8 flag-o-matic 55aaa148741116aa54ad0d80e361818e libtool f143db5a74ccd9ca28c1234deffede96 multilib b2f01ad412baf81650c23fcf0975fa33 systemd 47c677ae1d7b69031f11f630ac09f0d1 toolchain-funcs f164325a2cdb5b3ea39311d483988861
|
||||||
|
_md5_=7f174d8a6c7021955c9f27693647c4a7
|
@ -0,0 +1,15 @@
|
|||||||
|
BDEPEND=virtual/pkgconfig
|
||||||
|
DEFINED_PHASES=compile configure install postinst postrm prepare test
|
||||||
|
DEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) app-arch/xz-utils >=sys-devel/bison-3.0.1 sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18
|
||||||
|
DESCRIPTION=The PHP language runtime engine
|
||||||
|
EAPI=7
|
||||||
|
HOMEPAGE=https://secure.php.net/
|
||||||
|
IUSE=embed +cli cgi fpm apache2 phpdbg threads acl bcmath berkdb bzip2 calendar cdb cjk coverage crypt +ctype curl debug enchant exif +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl mhash mssql mysql mysqli nls oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm readline recode selinux +session sharedmem +simplexml snmp soap sockets spell sqlite ssl sysvipc systemd tidy +tokenizer truetype unicode wddx webp +xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib
|
||||||
|
KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
|
||||||
|
LICENSE=PHP-3.01 BSD Zend-2.0 bcmath? ( LGPL-2.1+ ) fpm? ( BSD-2 ) gd? ( gd ) unicode? ( BSD-2 LGPL-2.1 )
|
||||||
|
RDEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* !gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib:0= ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) systemd? ( sys-apps/systemd ) )
|
||||||
|
REQUIRED_USE=|| ( cli cgi fpm apache2 embed phpdbg ) cli? ( ^^ ( readline libedit ) ) truetype? ( gd zlib ) webp? ( gd zlib ) cjk? ( gd zlib ) exif? ( gd zlib ) xpm? ( gd zlib ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xslt? ( xml ) ldap-sasl? ( ldap ) mhash? ( hash ) phar? ( hash ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysqli !mysql ) sharedmem? ( !threads ) mysql? ( || ( mysqli pdo ) )
|
||||||
|
SLOT=7.0
|
||||||
|
SRC_URI=https://php.net/distributions/php-7.0.33.tar.xz
|
||||||
|
_eclasses_=eutils 6e6c2737b59a4b982de6fb3ecefd87f8 flag-o-matic 55aaa148741116aa54ad0d80e361818e multilib b2f01ad412baf81650c23fcf0975fa33 systemd 47c677ae1d7b69031f11f630ac09f0d1 toolchain-funcs f164325a2cdb5b3ea39311d483988861
|
||||||
|
_md5_=5227a3cf565e6aa7a733efd1dc27e03b
|
@ -0,0 +1,15 @@
|
|||||||
|
BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
|
||||||
|
DEFINED_PHASES=compile configure install postinst postrm prepare test
|
||||||
|
DEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( <app-text/enchant-2.0:0 ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) session-mm? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) ) truetype? ( =media-libs/freetype-2* ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) app-arch/xz-utils >=sys-devel/bison-3.0.1
|
||||||
|
DESCRIPTION=The PHP language runtime engine
|
||||||
|
EAPI=7
|
||||||
|
HOMEPAGE=https://secure.php.net/
|
||||||
|
IUSE=embed +cli cgi fpm apache2 phpdbg threads acl bcmath berkdb bzip2 calendar cdb cjk coverage crypt +ctype curl debug enchant exif +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl mhash mssql mysql mysqli nls oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm readline recode selinux +session session-mm sharedmem +simplexml snmp soap sockets spell sqlite ssl sysvipc systemd test tidy +tokenizer truetype unicode wddx webp +xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib
|
||||||
|
KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
|
||||||
|
LICENSE=PHP-3.01 BSD Zend-2.0 bcmath? ( LGPL-2.1+ ) fpm? ( BSD-2 ) gd? ( gd ) unicode? ( BSD-2 LGPL-2.1 )
|
||||||
|
RDEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) coverage? ( dev-util/lcov ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( <app-text/enchant-2.0:0 ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) session-mm? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) ) truetype? ( =media-libs/freetype-2* ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zlib? ( sys-libs/zlib:0= ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) systemd? ( sys-apps/systemd ) )
|
||||||
|
REQUIRED_USE=|| ( cli cgi fpm apache2 embed phpdbg ) cli? ( ^^ ( readline libedit ) ) truetype? ( gd zlib ) webp? ( gd zlib ) cjk? ( gd zlib ) exif? ( gd zlib ) xpm? ( gd zlib ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xslt? ( xml ) ldap-sasl? ( ldap ) mhash? ( hash ) phar? ( hash ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysqli !mysql ) session-mm? ( session !threads ) mysql? ( hash || ( mysqli pdo ) ) mysqli? ( hash )
|
||||||
|
SLOT=7.1
|
||||||
|
SRC_URI=https://secure.php.net/distributions/php-7.1.25.tar.xz
|
||||||
|
_eclasses_=autotools 1bf086cdd7356f5c9a4acd9727bd2065 eutils 6e6c2737b59a4b982de6fb3ecefd87f8 flag-o-matic 55aaa148741116aa54ad0d80e361818e libtool f143db5a74ccd9ca28c1234deffede96 multilib b2f01ad412baf81650c23fcf0975fa33 systemd 47c677ae1d7b69031f11f630ac09f0d1 toolchain-funcs f164325a2cdb5b3ea39311d483988861
|
||||||
|
_md5_=4c193b4a653fc5f759f3ebc9564cd386
|
@ -0,0 +1,15 @@
|
|||||||
|
BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
|
||||||
|
DEFINED_PHASES=compile configure install postinst postrm prepare test
|
||||||
|
DEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) argon2? ( app-crypt/argon2:= ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) coverage? ( dev-util/lcov ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( <app-text/enchant-2.0:0 ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) lmdb? ( dev-db/lmdb:= ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) session-mm? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) sodium? ( dev-libs/libsodium:= ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) ) tokyocabinet? ( dev-db/tokyocabinet ) truetype? ( =media-libs/freetype-2* ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zip-encryption? ( >=dev-libs/libzip-1.2.0:= ) zlib? ( sys-libs/zlib:0= ) app-arch/xz-utils >=sys-devel/bison-3.0.1
|
||||||
|
DESCRIPTION=The PHP language runtime engine
|
||||||
|
EAPI=7
|
||||||
|
HOMEPAGE=https://secure.php.net/
|
||||||
|
IUSE=embed +cli cgi fpm apache2 phpdbg threads acl argon2 bcmath berkdb bzip2 calendar cdb cjk coverage +ctype curl debug enchant exif +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit libressl lmdb mhash mssql mysql mysqli nls oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm readline recode selinux +session session-mm sharedmem +simplexml snmp soap sockets sodium spell sqlite ssl sysvipc systemd test tidy +tokenizer tokyocabinet truetype unicode wddx webp +xml xmlreader xmlwriter xmlrpc xpm xslt zip zip-encryption zlib
|
||||||
|
KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
|
||||||
|
LICENSE=PHP-3.01 BSD Zend-2.0 bcmath? ( LGPL-2.1+ ) fpm? ( BSD-2 ) gd? ( gd ) unicode? ( BSD-2 LGPL-2.1 )
|
||||||
|
RDEPEND=>=app-eselect/eselect-php-0.9.1[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] fpm? ( acl? ( sys-apps/acl ) ) apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=] <www-servers/apache-2.4[threads=] ) ) argon2? ( app-crypt/argon2:= ) berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 ) ) bzip2? ( app-arch/bzip2:0= ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) coverage? ( dev-util/lcov ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( <app-text/enchant-2.0:0 ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0:0= ) gmp? ( dev-libs/gmp:0= ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[kerberos=,ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) lmdb? ( dev-db/lmdb:= ) mssql? ( dev-db/freetds[mssql] ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql:* ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline:0= ) recode? ( app-text/recode ) session-mm? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) sodium? ( dev-libs/libsodium:= ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tidy? ( || ( app-text/tidy-html5 app-text/htmltidy ) ) tokyocabinet? ( dev-db/tokyocabinet ) truetype? ( =media-libs/freetype-2* ) unicode? ( dev-libs/oniguruma:= ) wddx? ( >=dev-libs/libxml2-2.6.8 ) webp? ( media-libs/libwebp:0= ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib:0= ) zip-encryption? ( >=dev-libs/libzip-1.2.0:= ) zlib? ( sys-libs/zlib:0= ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) systemd? ( sys-apps/systemd ) )
|
||||||
|
REQUIRED_USE=|| ( cli cgi fpm apache2 embed phpdbg ) cli? ( ^^ ( readline libedit ) ) truetype? ( gd zlib ) webp? ( gd zlib ) cjk? ( gd zlib ) exif? ( gd zlib ) xpm? ( gd zlib ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xslt? ( xml ) ldap-sasl? ( ldap ) mhash? ( hash ) phar? ( hash ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysqli !mysql ) session-mm? ( session !threads ) mysql? ( hash || ( mysqli pdo ) ) mysqli? ( hash ) zip-encryption? ( zip )
|
||||||
|
SLOT=7.2
|
||||||
|
SRC_URI=https://php.net/distributions/php-7.2.13.tar.xz
|
||||||
|
_eclasses_=autotools 1bf086cdd7356f5c9a4acd9727bd2065 eutils 6e6c2737b59a4b982de6fb3ecefd87f8 flag-o-matic 55aaa148741116aa54ad0d80e361818e libtool f143db5a74ccd9ca28c1234deffede96 multilib b2f01ad412baf81650c23fcf0975fa33 systemd 47c677ae1d7b69031f11f630ac09f0d1 toolchain-funcs f164325a2cdb5b3ea39311d483988861
|
||||||
|
_md5_=cba5728bbfe5ed640bd35a4c3124e1e1
|
Binary file not shown.
Binary file not shown.
@ -1,14 +0,0 @@
|
|||||||
DEFINED_PHASES=compile configure install prepare test
|
|
||||||
DEPEND=<dev-python/msgpack-0.5.2:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] >=dev-python/msgpack-0.4.0:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] virtual/python-greenlet[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( dev-python/trollius[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) test? ( <dev-python/msgpack-0.5.2:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] >=dev-python/msgpack-0.4.0:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] virtual/python-greenlet[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( dev-python/trollius[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) >=app-editors/neovim-0.1.6 dev-python/nose[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
|
||||||
DESCRIPTION=Python client for Neovim
|
|
||||||
EAPI=6
|
|
||||||
HOMEPAGE=https://github.com/neovim/python-client
|
|
||||||
IUSE=test python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6
|
|
||||||
KEYWORDS=~amd64 ~x86
|
|
||||||
LICENSE=Apache-2.0
|
|
||||||
RDEPEND=<dev-python/msgpack-0.5.2:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] >=dev-python/msgpack-0.4.0:0[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] virtual/python-greenlet[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( dev-python/trollius[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) >=app-editors/neovim-0.1.6 python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
|
||||||
REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 )
|
|
||||||
SLOT=0
|
|
||||||
SRC_URI=https://github.com/neovim/python-client/archive/0.1.13.tar.gz -> neovim-python-client-0.1.13.tar.gz
|
|
||||||
_eclasses_=distutils-r1 71a5ee567fb298e553ce8d1319279151 multibuild 40fe59465edacd730c644ec2bc197809 multilib b2f01ad412baf81650c23fcf0975fa33 multiprocessing cac3169468f893670dac3e7cb940e045 python-r1 ce1cd23cfdc1848e8e32743efe34f299 python-utils-r1 12114a2a9aab35b93efc037a196b3234 toolchain-funcs f164325a2cdb5b3ea39311d483988861 xdg-utils 93b2dfbb00a09161e1e7f6360c0f7f6b
|
|
||||||
_md5_=98a418733cb5495407911aacaa58b080
|
|
@ -1,14 +0,0 @@
|
|||||||
DEFINED_PHASES=compile configure install prepare test
|
|
||||||
DEPEND=>=dev-python/msgpack-0.5.2[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] virtual/python-greenlet[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( dev-python/trollius[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
|
||||||
DESCRIPTION=Python client for Neovim
|
|
||||||
EAPI=6
|
|
||||||
HOMEPAGE=https://github.com/neovim/python-client
|
|
||||||
IUSE=python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6
|
|
||||||
KEYWORDS=~amd64 ~x86
|
|
||||||
LICENSE=Apache-2.0
|
|
||||||
RDEPEND=>=dev-python/msgpack-0.5.2[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] virtual/python-greenlet[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( dev-python/trollius[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) >=app-editors/neovim-0.2.1 python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_python3_5? ( dev-lang/python:3.5 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)]
|
|
||||||
REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 )
|
|
||||||
SLOT=0
|
|
||||||
SRC_URI=https://github.com/neovim/python-client/archive/0.2.1.tar.gz -> neovim-python-client-0.2.1.tar.gz
|
|
||||||
_eclasses_=distutils-r1 71a5ee567fb298e553ce8d1319279151 multibuild 40fe59465edacd730c644ec2bc197809 multilib b2f01ad412baf81650c23fcf0975fa33 multiprocessing cac3169468f893670dac3e7cb940e045 python-r1 ce1cd23cfdc1848e8e32743efe34f299 python-utils-r1 12114a2a9aab35b93efc037a196b3234 toolchain-funcs f164325a2cdb5b3ea39311d483988861 xdg-utils 93b2dfbb00a09161e1e7f6360c0f7f6b
|
|
||||||
_md5_=94498d061572810dc74c35dd0cafb8f8
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue