restored upstream php:7.2. For legacy systems.
This commit is contained in:
		
							
								
								
									
										10
									
								
								dev-lang/php/Manifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								dev-lang/php/Manifest
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| AUX 20php5-envd 145 BLAKE2B 06476b8fc04d1e835496b417ac752f0834ddbe8584e4fddc6db0aa5e6845b82cdea0a1355c77125375dcdd0f0a3c19de5f3a8a64ee93950f96c437a16f971567 SHA512 581aa86479e3cd584ee1bc6dc6d4a135fe8ec343fe5519566d728d81f7018cfb23658bd0c0368951d380982c75adbb4f45acf3c146868aaf4e4ec8e9f2fad1ce | ||||
| AUX php-7.2.13-intl-use-icu-namespace.patch 11499 BLAKE2B 0dca597d5afd0309595499e3ff860e2d83183e570d02f202a1e2966d430606f09b8dc7427c4007e791914c8ee093a2e7cbf7372baa7896ac06d1912f2e707c09 SHA512 1332eb76feda2100685e319ae046512cf12b55a0d2be537c2172ccf035b547d851f84fb7941389882d7e3d674d91441e018c7b8f1e3f0d4cced05c314d5821fe | ||||
| AUX php-7.2.34-use-after-free-bug76047.patch 5542 BLAKE2B ccdabbe7a45f10f7a6666afabf27f2ab18ed011989447d950debe703e5f210d86a728c11bf883c74dc4ce88d634a8f10d1c9130a6e2dfb486ab92ebc1fb15e3c SHA512 8e2cc3dab0e3f3d7ba9b4a8cf4a16daa9cd908a5c1dc42ee1dfc44be82b4faffbb46b5bb0a88d15252edf4c95e05b4877c94aeaa05e9c511f3a49adafbc62c73 | ||||
| AUX php-fpm_at-simple.service 316 BLAKE2B 0ba10f3e3b004fbf14956e1e4f04f59b8a127e6717fe6b92c09b9f931033a11551c75fbbee9010f6b694c5a8758ca0eec9eed457ae304ba0dea8f2c256c3b8d4 SHA512 7367a3f8d3874f8e0c76f331ba613a0250db02f60ad9f87affaf448dcb5bc34bcecb91d88f415764a12b24b46ae3d1b738a002af9f77a4b707e916e83a0021fd | ||||
| AUX php-fpm_at.service 317 BLAKE2B f13fc38fcc0575a8517ee8d07b120efda37eabd2355061d0fdc303604c6b02ad42d7301180d86c977d5e585f5dd685343c592e37a6e0f44933707be79e0b77e0 SHA512 27982f9e2d958bfa75c89c7d3531e48d17fc388b1cdcbc8e09051b236b1184ee2baabdfcc567c19d9fcd067d4b3b86f171015616d8da42fccdabd89432d865e8 | ||||
| AUX php-freetype-2.9.1.patch 7667 BLAKE2B efc8f829bbad11b3e7b654d0882213ecb9aae766060d51f93446a6293a2f607339faba484c7b0b2f9318a5c5442da3c09e25aeda20dbc5e3258bf1009f8625b4 SHA512 0a06189f6fb3513cd2dcf9ddb590360475e2dd9a7aa8b13ab66c389c1ed40ce2361681f017cd3c6219f5b40a0a9d4978e57ca3ee4bacb7657db3285136fd2875 | ||||
| AUX php-iodbc-header-location.patch 481 BLAKE2B 9ea6a5d529dc7a8c78eeee800900372bc14309a05e352b2838da32e1384b61b507fdb623c9400094aa5b637eb1a87da92c72600eff79b18b8989ef90af56a0fa SHA512 86469f657d8807f005c28fd2149770c881add8f243fdfea087956c7987277597fe400a7af23f624f26da270356604717ed9cd04771154d7cf2ffe7237972372b | ||||
| DIST php-7.2.34.tar.xz 12309432 BLAKE2B 50522786d39296bc7411931c4f357d53c7a25da264192a6a6e7f7594f3dee108e22974e00a4bdc4d3af269ab63d07b28045ff6b4f4f0c79672ed059882647b93 SHA512 7ecc3de3b5db41ec4ff6a5ce6c7e77dc330753c6f3fd87db4d07d6bb763a0b047e83afeef2251b4c6a5d2ff53fd9f3d7e99d091ef2e2c6ab8f18db7447d8a97d | ||||
| EBUILD php-7.2.34-r2.ebuild 22872 BLAKE2B 041fd990f7c2e89ad83476bf66644321cad0c6132d6db5c88c07cbc44fc6246d012c2b0ea6553cfd886665bd8b34e300c986ed8c3de9b7e43bd4e0e0d9620525 SHA512 1b546d9911fc81bf306af751b0571efee65063388fe9d879da360bab61231bb321fb69c3c494c8bda5ccc2cc871308fd17e4a413e7654293640b00fdecb0a4ac | ||||
| MISC metadata.xml 3268 BLAKE2B 4abc96d858186ab5bc6f0797fb3f1cf7f5aaa0b07a4652dcc16aa65e197bd73803f6bac717084c0c9a194e7da5b6632523105205011a0d39221aabc16ade8e2e SHA512 1413edb5293cb93ad8f94376f11b9952ca6369b667ae23baed56d9cbaa68cb9cfa5a80da7dd7184ba84f08d5a4054068da1c10daca81d1730e7b6edebba8b29f | ||||
							
								
								
									
										2
									
								
								dev-lang/php/files/20php5-envd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								dev-lang/php/files/20php5-envd
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| MANPATH="/usr/lib/php5/man/" | ||||
| CONFIG_PROTECT_MASK="/etc/php/cli-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/apache2-php5/ext-active/" | ||||
							
								
								
									
										379
									
								
								dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										379
									
								
								dev-lang/php/files/php-7.2.13-intl-use-icu-namespace.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
|  | ||||
							
								
								
									
										174
									
								
								dev-lang/php/files/php-7.2.34-use-after-free-bug76047.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								dev-lang/php/files/php-7.2.34-use-after-free-bug76047.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | ||||
| Backport of https://git.php.net/?p=php-src.git;a=commit;h=ef1e4891b47949c8dc0f9482eef9454a0ecdfa1d | ||||
|  | ||||
| --- a/Zend/tests/bug52361.phpt | ||||
| +++ b/Zend/tests/bug52361.phpt | ||||
| @@ -25,9 +25,8 @@ try { | ||||
|  --EXPECTF-- | ||||
|  1. Exception: aaa in %sbug52361.php:5 | ||||
|  Stack trace: | ||||
| -#0 %sbug52361.php(13): aaa->__destruct() | ||||
| -#1 %sbug52361.php(16): bbb() | ||||
| -#2 {main} | ||||
| +#0 %sbug52361.php(16): aaa->__destruct() | ||||
| +#1 {main} | ||||
|  2. Exception: bbb in %sbug52361.php:13 | ||||
|  Stack trace: | ||||
|  #0 %sbug52361.php(16): bbb() | ||||
| --- /dev/null | ||||
| +++ b/Zend/tests/bug76047.phpt | ||||
| @@ -0,0 +1,68 @@ | ||||
| +--TEST-- | ||||
| +Bug #76047: Use-after-free when accessing already destructed backtrace arguments | ||||
| +--FILE-- | ||||
| +<?php | ||||
| + | ||||
| +class Vuln { | ||||
| +    public $a; | ||||
| +    public function __destruct() { | ||||
| +        unset($this->a); | ||||
| +        $backtrace = (new Exception)->getTrace(); | ||||
| +        var_dump($backtrace); | ||||
| +    } | ||||
| +} | ||||
| + | ||||
| +function test($arg) { | ||||
| +    $arg = str_shuffle(str_repeat('A', 79)); | ||||
| +    $vuln = new Vuln(); | ||||
| +    $vuln->a = $arg; | ||||
| +} | ||||
| + | ||||
| +function test2($arg) { | ||||
| +    $$arg = 1; // Trigger symbol table | ||||
| +    $arg = str_shuffle(str_repeat('A', 79)); | ||||
| +    $vuln = new Vuln(); | ||||
| +    $vuln->a = $arg; | ||||
| +} | ||||
| + | ||||
| +test('x'); | ||||
| +test2('x'); | ||||
| + | ||||
| +?> | ||||
| +--EXPECTF-- | ||||
| +array(1) { | ||||
| +  [0]=> | ||||
| +  array(6) { | ||||
| +    ["file"]=> | ||||
| +    string(%d) "%s" | ||||
| +    ["line"]=> | ||||
| +    int(%d) | ||||
| +    ["function"]=> | ||||
| +    string(10) "__destruct" | ||||
| +    ["class"]=> | ||||
| +    string(4) "Vuln" | ||||
| +    ["type"]=> | ||||
| +    string(2) "->" | ||||
| +    ["args"]=> | ||||
| +    array(0) { | ||||
| +    } | ||||
| +  } | ||||
| +} | ||||
| +array(1) { | ||||
| +  [0]=> | ||||
| +  array(6) { | ||||
| +    ["file"]=> | ||||
| +    string(%d) "%s" | ||||
| +    ["line"]=> | ||||
| +    int(%d) | ||||
| +    ["function"]=> | ||||
| +    string(10) "__destruct" | ||||
| +    ["class"]=> | ||||
| +    string(4) "Vuln" | ||||
| +    ["type"]=> | ||||
| +    string(2) "->" | ||||
| +    ["args"]=> | ||||
| +    array(0) { | ||||
| +    } | ||||
| +  } | ||||
| +} | ||||
| --- a/Zend/zend_vm_def.h | ||||
| +++ b/Zend/zend_vm_def.h | ||||
| @@ -2366,9 +2366,9 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) | ||||
|  	uint32_t call_info = EX_CALL_INFO(); | ||||
|   | ||||
|  	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED)) == 0)) { | ||||
| +		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		i_free_compiled_variables(execute_data); | ||||
|   | ||||
| -		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) { | ||||
|  			zend_object *object = Z_OBJ(execute_data->This); | ||||
|  #if 0 | ||||
| @@ -2394,12 +2394,12 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) | ||||
|  		LOAD_NEXT_OPLINE(); | ||||
|  		ZEND_VM_LEAVE(); | ||||
|  	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) { | ||||
| +		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		i_free_compiled_variables(execute_data); | ||||
|   | ||||
|  		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) { | ||||
|  			zend_clean_and_cache_symbol_table(EX(symbol_table)); | ||||
|  		} | ||||
| -		EG(current_execute_data) = EX(prev_execute_data); | ||||
|   | ||||
|  		/* Free extra args before releasing the closure, | ||||
|  		 * as that may free the op_array. */ | ||||
| @@ -2449,6 +2449,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) | ||||
|  		ZEND_VM_LEAVE(); | ||||
|  	} else { | ||||
|  		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) { | ||||
| +			EG(current_execute_data) = EX(prev_execute_data); | ||||
|  			i_free_compiled_variables(execute_data); | ||||
|  			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) { | ||||
|  				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) { | ||||
| @@ -2456,7 +2457,6 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) | ||||
|  				} | ||||
|  				zend_vm_stack_free_extra_args_ex(call_info, execute_data); | ||||
|  			} | ||||
| -			EG(current_execute_data) = EX(prev_execute_data); | ||||
|  			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) { | ||||
|  				OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype); | ||||
|  			} | ||||
| --- a/Zend/zend_vm_execute.h | ||||
| +++ b/Zend/zend_vm_execute.h | ||||
| @@ -434,9 +434,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_ | ||||
|  	uint32_t call_info = EX_CALL_INFO(); | ||||
|   | ||||
|  	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED)) == 0)) { | ||||
| +		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		i_free_compiled_variables(execute_data); | ||||
|   | ||||
| -		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) { | ||||
|  			zend_object *object = Z_OBJ(execute_data->This); | ||||
|  #if 0 | ||||
| @@ -462,12 +462,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_ | ||||
|  		LOAD_NEXT_OPLINE(); | ||||
|  		ZEND_VM_LEAVE(); | ||||
|  	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) { | ||||
| +		EG(current_execute_data) = EX(prev_execute_data); | ||||
|  		i_free_compiled_variables(execute_data); | ||||
|   | ||||
|  		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) { | ||||
|  			zend_clean_and_cache_symbol_table(EX(symbol_table)); | ||||
|  		} | ||||
| -		EG(current_execute_data) = EX(prev_execute_data); | ||||
|   | ||||
|  		/* Free extra args before releasing the closure, | ||||
|  		 * as that may free the op_array. */ | ||||
| @@ -517,6 +517,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_ | ||||
|  		ZEND_VM_LEAVE(); | ||||
|  	} else { | ||||
|  		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) { | ||||
| +			EG(current_execute_data) = EX(prev_execute_data); | ||||
|  			i_free_compiled_variables(execute_data); | ||||
|  			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) { | ||||
|  				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) { | ||||
| @@ -524,7 +525,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_ | ||||
|  				} | ||||
|  				zend_vm_stack_free_extra_args_ex(call_info, execute_data); | ||||
|  			} | ||||
| -			EG(current_execute_data) = EX(prev_execute_data); | ||||
|  			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) { | ||||
|  				OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype); | ||||
|  			} | ||||
|   | ||||
							
								
								
									
										13
									
								
								dev-lang/php/files/php-fpm_at-simple.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								dev-lang/php/files/php-fpm_at-simple.service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| [Unit] | ||||
| Description=The PHP FastCGI Process Manager | ||||
| After=network.target | ||||
|  | ||||
| [Service] | ||||
| Type=simple | ||||
| PIDFile=/run/php-fpm/php-fpm-%I.pid | ||||
| ExecStart=/usr/libexec/php-fpm-launcher php%I -y /etc/php/fpm-php%I/php-fpm.conf --nodaemonize | ||||
| ExecReload=/bin/kill -USR2 $MAINPID | ||||
| PrivateTmp=true | ||||
|  | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
							
								
								
									
										14
									
								
								dev-lang/php/files/php-fpm_at.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								dev-lang/php/files/php-fpm_at.service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| [Unit] | ||||
| Description=The PHP FastCGI Process Manager | ||||
| After=network.target | ||||
|  | ||||
| [Service] | ||||
| Type=notify | ||||
| PIDFile=/run/php-fpm/php-fpm-%I.pid | ||||
| ExecStart=/usr/libexec/php-fpm-launcher php%I -y /etc/php/fpm-php%I/php-fpm.conf --nodaemonize | ||||
| ExecReload=/bin/kill -USR2 $MAINPID | ||||
| PrivateTmp=true | ||||
|  | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
|  | ||||
							
								
								
									
										233
									
								
								dev-lang/php/files/php-freetype-2.9.1.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								dev-lang/php/files/php-freetype-2.9.1.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,233 @@ | ||||
| --- a/ext/gd/config.m4	2018-04-24 11:09:54.000000000 -0400 | ||||
| +++ b/ext/gd/config.m4	2018-05-04 15:18:49.867283889 -0400 | ||||
| @@ -186,21 +186,36 @@ | ||||
|  AC_DEFUN([PHP_GD_FREETYPE2],[ | ||||
|    if test "$PHP_FREETYPE_DIR" != "no"; then | ||||
|   | ||||
| -    for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| -      if test -f "$i/bin/freetype-config"; then | ||||
| -        FREETYPE2_DIR=$i | ||||
| -        FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| -        break | ||||
| +    AC_PATH_PROG(PKG_CONFIG, pkg-config, no) | ||||
| +    AC_MSG_CHECKING(for freetype2) | ||||
| + | ||||
| +    if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists freetype2 ; then | ||||
| + | ||||
| +      FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags freetype2` | ||||
| +      FREETYPE2_LIBS=`$PKG_CONFIG --libs freetype2` | ||||
| +      FREETYPE2_VERSION=`$PKG_CONFIG --modversion freetype2` | ||||
| +      FREETYPE2_DIR="found" | ||||
| + | ||||
| +      AC_MSG_RESULT(from pkgconfig: version $FREETYPE2_VERSION found) | ||||
| +    else | ||||
| + | ||||
| +      for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| +        if test -f "$i/bin/freetype-config"; then | ||||
| +          FREETYPE2_DIR=$i | ||||
| +          FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| +          break | ||||
| +        fi | ||||
| +      done | ||||
| + | ||||
| +      if test -z "$FREETYPE2_DIR"; then | ||||
| +        AC_MSG_ERROR([freetype-config not found.]) | ||||
|        fi | ||||
| -    done | ||||
|   | ||||
| -    if test -z "$FREETYPE2_DIR"; then | ||||
| -      AC_MSG_ERROR([freetype-config not found.]) | ||||
| +      FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| +      FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| +      AC_MSG_RESULT(found via freetype-config) | ||||
|      fi | ||||
|   | ||||
| -    FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| -    FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| - | ||||
|      PHP_EVAL_INCLINE($FREETYPE2_CFLAGS) | ||||
|      PHP_EVAL_LIBLINE($FREETYPE2_LIBS, GD_SHARED_LIBADD) | ||||
|      AC_DEFINE(HAVE_LIBFREETYPE,1,[ ]) | ||||
| --- a/configure	2018-04-24 11:10:05.000000000 -0400 | ||||
| +++ b/configure	2018-05-04 15:18:45.626367913 -0400 | ||||
| @@ -34348,21 +34348,79 @@ | ||||
|   | ||||
|    if test "$PHP_FREETYPE_DIR" != "no"; then | ||||
|   | ||||
| -    for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| -      if test -f "$i/bin/freetype-config"; then | ||||
| -        FREETYPE2_DIR=$i | ||||
| -        FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| -        break | ||||
| +    # Extract the first word of "pkg-config", so it can be a program name with args. | ||||
| +set dummy pkg-config; ac_word=$2 | ||||
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 | ||||
| +$as_echo_n "checking for $ac_word... " >&6; } | ||||
| +if ${ac_cv_path_PKG_CONFIG+:} false; then : | ||||
| +  $as_echo_n "(cached) " >&6 | ||||
| +else | ||||
| +  case $PKG_CONFIG in | ||||
| +  [\\/]* | ?:[\\/]*) | ||||
| +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. | ||||
| +  ;; | ||||
| +  *) | ||||
| +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||||
| +for as_dir in $PATH | ||||
| +do | ||||
| +  IFS=$as_save_IFS | ||||
| +  test -z "$as_dir" && as_dir=. | ||||
| +    for ac_exec_ext in '' $ac_executable_extensions; do | ||||
| +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then | ||||
| +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" | ||||
| +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 | ||||
| +    break 2 | ||||
| +  fi | ||||
| +done | ||||
| +  done | ||||
| +IFS=$as_save_IFS | ||||
| + | ||||
| +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" | ||||
| +  ;; | ||||
| +esac | ||||
| +fi | ||||
| +PKG_CONFIG=$ac_cv_path_PKG_CONFIG | ||||
| +if test -n "$PKG_CONFIG"; then | ||||
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 | ||||
| +$as_echo "$PKG_CONFIG" >&6; } | ||||
| +else | ||||
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||||
| +$as_echo "no" >&6; } | ||||
| +fi | ||||
| + | ||||
| +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 | ||||
| +$as_echo_n "checking for freetype2... " >&6; } | ||||
| + | ||||
| + | ||||
| +    if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists freetype2 ; then | ||||
| + | ||||
| +      FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags freetype2` | ||||
| +      FREETYPE2_LIBS=`$PKG_CONFIG --libs freetype2` | ||||
| +      FREETYPE2_VERSION=`$PKG_CONFIG --modversion freetype2` | ||||
| +      FREETYPE2_DIR="found" | ||||
| + | ||||
| +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: from pkgconfig: version $FREETYPE2_VERSION found" >&5 | ||||
| +$as_echo "from pkgconfig: version $FREETYPE2_VERSION found" >&6; } | ||||
| +    else | ||||
| + | ||||
| +      for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| +        if test -f "$i/bin/freetype-config"; then | ||||
| +          FREETYPE2_DIR=$i | ||||
| +          FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| +          break | ||||
| +        fi | ||||
| +      done | ||||
| + | ||||
| +      if test -z "$FREETYPE2_DIR"; then | ||||
| +        as_fn_error $? "freetype-config not found." "$LINENO" 5 | ||||
|        fi | ||||
| -    done | ||||
|   | ||||
| -    if test -z "$FREETYPE2_DIR"; then | ||||
| -      as_fn_error $? "freetype-config not found." "$LINENO" 5 | ||||
| +      FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| +      FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found via freetype-config" >&5 | ||||
| +$as_echo "found via freetype-config" >&6; } | ||||
|      fi | ||||
|   | ||||
| -    FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| -    FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| - | ||||
|   | ||||
|    for ac_i in $FREETYPE2_CFLAGS; do | ||||
|      case $ac_i in | ||||
| @@ -36019,21 +36076,78 @@ | ||||
|   | ||||
|    if test "$PHP_FREETYPE_DIR" != "no"; then | ||||
|   | ||||
| -    for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| -      if test -f "$i/bin/freetype-config"; then | ||||
| -        FREETYPE2_DIR=$i | ||||
| -        FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| -        break | ||||
| +    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 | ||||
| +$as_echo_n "checking for freetype2... " >&6; } | ||||
| +    # Extract the first word of "pkg-config", so it can be a program name with args. | ||||
| +set dummy pkg-config; ac_word=$2 | ||||
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 | ||||
| +$as_echo_n "checking for $ac_word... " >&6; } | ||||
| +if ${ac_cv_path_PKG_CONFIG+:} false; then : | ||||
| +  $as_echo_n "(cached) " >&6 | ||||
| +else | ||||
| +  case $PKG_CONFIG in | ||||
| +  [\\/]* | ?:[\\/]*) | ||||
| +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. | ||||
| +  ;; | ||||
| +  *) | ||||
| +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||||
| +for as_dir in $PATH | ||||
| +do | ||||
| +  IFS=$as_save_IFS | ||||
| +  test -z "$as_dir" && as_dir=. | ||||
| +    for ac_exec_ext in '' $ac_executable_extensions; do | ||||
| +  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then | ||||
| +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" | ||||
| +    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 | ||||
| +    break 2 | ||||
| +  fi | ||||
| +done | ||||
| +  done | ||||
| +IFS=$as_save_IFS | ||||
| + | ||||
| +  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" | ||||
| +  ;; | ||||
| +esac | ||||
| +fi | ||||
| +PKG_CONFIG=$ac_cv_path_PKG_CONFIG | ||||
| +if test -n "$PKG_CONFIG"; then | ||||
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 | ||||
| +$as_echo "$PKG_CONFIG" >&6; } | ||||
| +else | ||||
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||||
| +$as_echo "no" >&6; } | ||||
| +fi | ||||
| + | ||||
| + | ||||
| + | ||||
| +    if test -x "$PKG_CONFIG" && $PKG_CONFIG --exists freetype2 ; then | ||||
| + | ||||
| +      FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags freetype2` | ||||
| +      FREETYPE2_LIBS=`$PKG_CONFIG --libs freetype2` | ||||
| +      FREETYPE2_VERSION=`$PKG_CONFIG --modversion freetype2` | ||||
| + | ||||
| +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: from pkgconfig: version $FREETYPE_VERSON found" >&5 | ||||
| +$as_echo "from pkgconfig: version $FREETYPE_VERSON found" >&6; } | ||||
| +    else | ||||
| + | ||||
| +      for i in $PHP_FREETYPE_DIR /usr/local /usr; do | ||||
| +        if test -f "$i/bin/freetype-config"; then | ||||
| +          FREETYPE2_DIR=$i | ||||
| +          FREETYPE2_CONFIG="$i/bin/freetype-config" | ||||
| +          break | ||||
| +        fi | ||||
| +      done | ||||
| + | ||||
| +      if test -z "$FREETYPE2_DIR"; then | ||||
| +        as_fn_error $? "freetype-config not found." "$LINENO" 5 | ||||
|        fi | ||||
| -    done | ||||
|   | ||||
| -    if test -z "$FREETYPE2_DIR"; then | ||||
| -      as_fn_error $? "freetype-config not found." "$LINENO" 5 | ||||
| +      FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| +      FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| +      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found via freetype-config" >&5 | ||||
| +$as_echo "found via freetype-config" >&6; } | ||||
|      fi | ||||
|   | ||||
| -    FREETYPE2_CFLAGS=`$FREETYPE2_CONFIG --cflags` | ||||
| -    FREETYPE2_LIBS=`$FREETYPE2_CONFIG --libs` | ||||
| - | ||||
|   | ||||
|    for ac_i in $FREETYPE2_CFLAGS; do | ||||
|      case $ac_i in | ||||
							
								
								
									
										14
									
								
								dev-lang/php/files/php-iodbc-header-location.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								dev-lang/php/files/php-iodbc-header-location.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| diff -aurN a/ext/pdo_odbc/config.m4 b/ext/pdo_odbc/config.m4 | ||||
| --- a/ext/pdo_odbc/config.m4	2019-11-26 15:13:39.000000000 -0500 | ||||
| +++ b/ext/pdo_odbc/config.m4	2019-12-06 10:39:56.296658492 -0500 | ||||
| @@ -85,6 +85,10 @@ | ||||
|      PDO_ODBC_LIBDIR="$pdo_odbc_def_libdir" | ||||
|    fi | ||||
|   | ||||
| +  if test "$pdo_odbc_def_lib" = "iodbc" ; then | ||||
| +    PDO_ODBC_INCDIR="$PDO_ODBC_INCDIR/iodbc" | ||||
| +  fi | ||||
| + | ||||
|    AC_MSG_RESULT([$pdo_odbc_flavour | ||||
|            libs       $PDO_ODBC_LIBDIR, | ||||
|            headers    $PDO_ODBC_INCDIR]) | ||||
							
								
								
									
										70
									
								
								dev-lang/php/metadata.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								dev-lang/php/metadata.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> | ||||
| <pkgmetadata> | ||||
|   <maintainer type="project"> | ||||
|     <email>php-bugs@gentoo.org</email> | ||||
|     <name>PHP</name> | ||||
|   </maintainer> | ||||
|   <maintainer type="person"> | ||||
|     <email>mjo@gentoo.org</email> | ||||
|     <name>Michael Orlitzky</name> | ||||
|   </maintainer> | ||||
|   <use> | ||||
|     <flag name="argon2">Enable password hashing algorithm from <pkg>app-crypt/argon2</pkg></flag> | ||||
|     <flag name="bcmath">Add support for libbcmath</flag> | ||||
|     <flag name="cli">Enable CLI SAPI</flag> | ||||
|     <flag name="coverage"> | ||||
|       Include gcov symbols for test coverage and lcov reports. Only | ||||
|       useful for extension developers, and requires GCC. | ||||
|     </flag> | ||||
|     <flag name="ctype">Enable ctype functions</flag> | ||||
|     <flag name="embed">Enable embed SAPI </flag> | ||||
|     <flag name="enchant">Add supports Enchant spelling library. </flag> | ||||
|     <flag name="ffi"> Add foreign function interface (ffi extension) support</flag> | ||||
|     <flag name="fileinfo"> Add fileinfo extension support</flag> | ||||
|     <flag name="filter">Add filter extension support</flag> | ||||
|     <flag name="flatfile">Add dbm support for flat files</flag> | ||||
|     <flag name="fpm">Enable the FastCGI Process Manager SAPI</flag> | ||||
|     <flag name="gd">Adds support for gd (bundled with PHP)</flag> | ||||
|     <flag name="hash">Enable the hash extension</flag> | ||||
|     <flag name="inifile">Add dbm support for .ini files</flag> | ||||
|     <flag name="jit">Enable PCRE JIT support</flag> | ||||
|     <flag name="json">Enable JSON support</flag> | ||||
|     <flag name="ldap-sasl">Add SASL support for the PHP LDAP extension</flag> | ||||
|     <flag name="lmdb">Enable support for <pkg>dev-db/lmdb</pkg> db backend</flag> | ||||
|     <flag name="intl"> | ||||
|       Enables the intl extension for extended internalization support | ||||
|     </flag> | ||||
|     <flag name="opcache"> | ||||
|       Enables built-in opcode cache, replacing pecl-apc et al. | ||||
|     </flag> | ||||
|     <flag name="pcntl">Add support for process creation functions</flag> | ||||
|     <flag name="pdo">Enable the bundled PDO extensions</flag> | ||||
|     <flag name="phar"> | ||||
|       Enables the phar extension to provide phar archive support | ||||
|     </flag> | ||||
|     <flag name="phpdbg"> | ||||
|       Enable the PHP Debug Command Line SAPI (like gdb for php) | ||||
|     </flag> | ||||
|     <flag name="session-mm"> | ||||
|       Include <pkg>dev-libs/mm</pkg> support for session storage | ||||
|     </flag> | ||||
|     <flag name="sharedmem">Add support for shared memory use</flag> | ||||
|     <flag name="simplexml">Support for SimpleXML</flag> | ||||
|     <flag name="sodium"> | ||||
|       Enable support for crypto through <pkg>dev-libs/libsodium</pkg> | ||||
|     </flag> | ||||
|     <flag name="sysvipc"> | ||||
|       Support for System V-compatible inter-process communication | ||||
|     </flag> | ||||
|     <flag name="tokenizer">Add support for the PHP file parser</flag> | ||||
|     <flag name="tokyocabinet"> | ||||
|       Enable support for <pkg>dev-db/tokyocabinet</pkg> db backend</flag> | ||||
|     <flag name="xmlreader">Enable XMLReader support</flag> | ||||
|     <flag name="xmlwriter">Enable XMLWriter support</flag> | ||||
|     <flag name="xslt">Enable the XSL extension</flag> | ||||
|     <flag name="wddx">Add support for Web Distributed Data eXchange</flag> | ||||
|     <flag name="webp">Enable webp support for GD in php-7.x</flag> | ||||
|     <flag name="zip-encryption">Enable ZIP file encryption from <pkg>dev-libs/libzip</pkg></flag> | ||||
|   </use> | ||||
| </pkgmetadata> | ||||
							
								
								
									
										764
									
								
								dev-lang/php/php-7.2.34-r2.ebuild
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										764
									
								
								dev-lang/php/php-7.2.34-r2.ebuild
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,764 @@ | ||||
| # Copyright 1999-2021 Gentoo Authors | ||||
| # Distributed under the terms of the GNU General Public License v2 | ||||
|  | ||||
| EAPI="7" | ||||
|  | ||||
| inherit flag-o-matic systemd autotools toolchain-funcs | ||||
|  | ||||
| DESCRIPTION="The PHP language runtime engine" | ||||
| HOMEPAGE="https://www.php.net/" | ||||
| SRC_URI="https://www.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 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-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[apache2_modules_unixd(+),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-r3: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-2[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? ( 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:0= ) | ||||
| 	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" | ||||
|  | ||||
| BDEPEND="virtual/pkgconfig" | ||||
|  | ||||
| # 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 ) | ||||
| " | ||||
|  | ||||
| RESTRICT="!test? ( test )" | ||||
|  | ||||
| PATCHES=( | ||||
| 	"${FILESDIR}/php-freetype-2.9.1.patch" | ||||
| 	"${FILESDIR}/php-7.2.13-intl-use-icu-namespace.patch" | ||||
| 	"${FILESDIR}/php-7.2.34-use-after-free-bug76047.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 | ||||
|  | ||||
| 	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 "../ext/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 | ||||
|  | ||||
| 	# Fix building against >=ICU-68, https://bugs.php.net/80310 | ||||
| 	append-cflags -DU_DEFINE_FALSE_AND_TRUE=1 | ||||
| 	append-cxxflags -DU_DEFINE_FALSE_AND_TRUE=1 | ||||
|  | ||||
| 	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 | ||||
|  | ||||
| 	local one_sapi | ||||
| 	local sapi | ||||
| 	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 | ||||
|  | ||||
| 	local sapi | ||||
| 	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="",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 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" | ||||
| 						# Install the "phar" archive utility. | ||||
| 						if use phar ; then | ||||
| 							emake INSTALL_ROOT="${D}" install-pharcmd | ||||
| 							dosym "..${dest#/usr}/bin/phar" "/usr/bin/phar${SLOT}" | ||||
| 						fi | ||||
| 						;; | ||||
| 					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#/usr}/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 | ||||
| 	local m | ||||
| 	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 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user