diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2018-12-07 01:27:48 +0100 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2018-12-07 01:41:37 +0100 |
commit | 8afd29d91effe9a8e70bad4c15cbe7f1b581d97d (patch) | |
tree | bec620d7b09a51ce312cf109193f032151b3679a /dev-lang/php/files | |
parent | dev-python/neovim-python-client: Clean old (diff) | |
download | gentoo-8afd29d91effe9a8e70bad4c15cbe7f1b581d97d.tar.gz gentoo-8afd29d91effe9a8e70bad4c15cbe7f1b581d97d.tar.bz2 gentoo-8afd29d91effe9a8e70bad4c15cbe7f1b581d97d.zip |
dev-lang/php: bump to v7.1.25
- EAPI bump to EAPI=7
- Use pkg-config for detecting ICU
- Proper ICU namespace usage backported
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'dev-lang/php/files')
-rw-r--r-- | dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch | 121 | ||||
-rw-r--r-- | dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch | 379 |
2 files changed, 500 insertions, 0 deletions
diff --git a/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch b/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch new file mode 100644 index 000000000000..2d4254d6e59e --- /dev/null +++ b/dev-lang/php/files/php-7.1.25-intl-detect-icu-via-pkg-config.patch @@ -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 + diff --git a/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch b/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch new file mode 100644 index 000000000000..5a1cc472f109 --- /dev/null +++ b/dev-lang/php/files/php-7.1.25-intl-use-icu-namespace.patch @@ -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 + |