[php] - update to 5.5.0beta1 http://fedoraproject.org/wiki/Features/Php55 - new Zend OPcache extension in
Remi Collet
remi at fedoraproject.org
Fri Mar 22 09:04:36 UTC 2013
commit 77d120e92be73a895596c27a32ede91112048914
Author: Remi Collet <rcollet at redhat.com>
Date: Fri Mar 22 10:04:26 2013 +0100
- update to 5.5.0beta1 http://fedoraproject.org/wiki/Features/Php55
- new Zend OPcache extension in php-opccache new sub-package
- don't display XFAIL tests in report
- use xz compressed tarball
- build simplexml and xml extensions shared (moved in php-xml)
- build bz2, calendar, ctype, exif, ftp, gettext, iconv sockets and tokenizer extensions shared (in php-common)
- build gmp extension shared (in php-gmp new sub-package)
- build shmop extension shared (moved in php-process)
- drop some old compatibility provides (php-api, php-zend-abi, php-pecl-*)
.gitignore | 1 +
opcache.ini | 95 ++
php-5.4.0-easter.patch | 689 -------------
php-5.4.7-libdb.patch | 24 +
php-5.5.0-build.patch | 2579 ++++++++++++++++++++++++++++++++++++++++++++++++
php.spec | 262 ++++--
sources | 2 +-
7 files changed, 2876 insertions(+), 776 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 2f3c9a6..0b9cd09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ php-5.3*.bz2
/php-5.4.12.tar.bz2
/php-5.4.13RC1.tar.bz2
/php-5.4.13.tar.bz2
+/php-5.5.0beta1.tar.xz
diff --git a/opcache.ini b/opcache.ini
new file mode 100644
index 0000000..fd1d46d
--- /dev/null
+++ b/opcache.ini
@@ -0,0 +1,95 @@
+; Enable Zend OPcache extension module
+zend_extension=@EXTPATH@/opcache.so
+
+; Determines if Zend OPCache is enabled
+opcache.enable=1
+
+; The OPcache shared memory storage size.
+opcache.memory_consumption=128
+
+; The amount of memory for interned strings in Mbytes.
+opcache.interned_strings_buffer=8
+
+; The maximum number of keys (scripts) in the OPcache hash table.
+; Only numbers between 200 and 100000 are allowed.
+opcache.max_accelerated_files=4000
+
+; The maximum percentage of "wasted" memory until a restart is scheduled.
+;opcache.max_wasted_percentage=5
+
+; When this directive is enabled, the OPcache appends the current working
+; directory to the script key, thus eliminating possible collisions between
+; files with the same name (basename). Disabling the directive improves
+; performance, but may break existing applications.
+;opcache.use_cwd=1
+
+; When disabled, you must reset the OPcache manually or restart the
+; webserver for changes to the filesystem to take effect.
+;opcache.validate_timestamps=1
+
+; How often (in seconds) to check file timestamps for changes to the shared
+; memory storage allocation. ("1" means validate once per second, but only
+; once per request. "0" means always validate)
+;opcache.revalidate_freq=2
+
+; Enables or disables file search in include_path optimization
+;opcache.revalidate_path=0
+
+; If disabled, all PHPDoc comments are dropped from the code to reduce the
+ ;size of the optimized code.
+;opcache.save_comments=1
+
+; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"
+; may be always stored (save_comments=1), but not loaded by applications
+; that don't need them anyway.
+;opcache.load_comments=1
+
+; If enabled, a fast shutdown sequence is used for the accelerated code
+opcache.fast_shutdown=1
+
+; Allow file existence override (file_exists, etc.) performance feature.
+;opcache.enable_file_override=0
+
+; A bitmask, where each bit enables or disables the appropriate OPcache
+; passes
+;opcache.optimization_level=0xffffffff
+
+;opcache.inherited_hack=1
+;opcache.dups_fix=0
+
+; The location of the OPcache blacklist file.
+; The OPcache blacklist file is a text file that holds the names of files
+; that should not be accelerated. The file format is to add each filename
+; to a new line. The filename may be a full path or just a file prefix
+; (i.e., /var/www/x blacklists all the files and directories in /var/www
+; that start with 'x').
+;opcache.blacklist_filename=
+
+; Allows exclusion of large files from being cached. By default all files
+; are cached.
+;opcache.max_file_size=0
+
+; Check the cache checksum each N requests.
+; The default value of "0" means that the checks are disabled.
+;opcache.consistency_checks=0
+
+; How long to wait (in seconds) for a scheduled restart to begin if the cache
+; is not being accessed.
+;opcache.force_restart_timeout=180
+
+; OPcache error_log file name. Empty string assumes "stderr".
+;opcache.error_log=
+
+; All OPcache errors go to the Web server log.
+; By default, only fatal errors (level 0) or errors (level 1) are logged.
+; You can also enable warnings (level 2), info messages (level 3) or
+; debug messages (level 4).
+;opcache.log_verbosity_level=1
+
+; Preferred Shared Memory back-end. Leave empty and let the system decide.
+;opcache.preferred_memory_model=
+
+; Protect the shared memory from unexpected writing during script execution.
+; Useful for internal debugging only.
+;opcache.protect_memory=0
+
diff --git a/php-5.4.7-libdb.patch b/php-5.4.7-libdb.patch
index 0b1e305..bc4e1fc 100644
--- a/php-5.4.7-libdb.patch
+++ b/php-5.4.7-libdb.patch
@@ -60,3 +60,27 @@
fi
PHP_DBA_STD_RESULT(db4,Berkeley DB4)
+--- php-5.4.7/ext/dba/dba.c.old 2012-09-19 14:55:23.868456900 +0200
++++ php-5.4.7/ext/dba/dba.c 2012-09-19 15:02:42.796009320 +0200
+@@ -52,6 +52,10 @@
+ #include "php_qdbm.h"
+ #include "php_tcadb.h"
+
++#ifdef DB4_INCLUDE_FILE
++#include DB4_INCLUDE_FILE
++#endif
++
+ /* {{{ arginfo */
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_dba_popen, 0, 0, 2)
+ ZEND_ARG_INFO(0, path)
+@@ -522,6 +526,10 @@
+
+ php_info_print_table_start();
+ php_info_print_table_row(2, "DBA support", "enabled");
++#ifdef DB_VERSION_STRING
++ php_info_print_table_row(2, "libdb header version", DB_VERSION_STRING);
++ php_info_print_table_row(2, "libdb library version", db_version(NULL, NULL, NULL));
++#endif
+ if (handlers.c) {
+ smart_str_0(&handlers);
+ php_info_print_table_row(2, "Supported handlers", handlers.c);
diff --git a/php-5.5.0-build.patch b/php-5.5.0-build.patch
new file mode 100644
index 0000000..27a16da
--- /dev/null
+++ b/php-5.5.0-build.patch
@@ -0,0 +1,2579 @@
+diff -ru php-5.5.0beta1/Zend/zend_ini_parser.c php5.5-201303201430/Zend/zend_ini_parser.c
+--- php-5.5.0beta1/Zend/zend_ini_parser.c 2013-03-20 15:26:53.000000000 +0100
++++ php5.5-201303201430/Zend/zend_ini_parser.c 2013-03-20 15:37:18.000000000 +0100
+@@ -1,8 +1,10 @@
+-/* A Bison parser, made by GNU Bison 2.6.1. */
+
+-/* Bison implementation for Yacc-like parsers in C
++/* A Bison parser, made by GNU Bison 2.4.1. */
++
++/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -44,7 +46,7 @@
+ #define YYBISON 1
+
+ /* Bison version. */
+-#define YYBISON_VERSION "2.6.1"
++#define YYBISON_VERSION "2.4.1"
+
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -58,6 +60,8 @@
+ /* Pull parsers. */
+ #define YYPULL 1
+
++/* Using locations. */
++#define YYLSP_NEEDED 0
+
+ /* Substitute the variable and function names. */
+ #define yyparse ini_parse
+@@ -68,6 +72,7 @@
+ #define yydebug ini_debug
+ #define yynerrs ini_nerrs
+
++
+ /* Copy the first part of user declarations. */
+
+
+@@ -319,13 +324,10 @@
+
+
+
+-# ifndef YY_NULL
+-# if defined __cplusplus && 201103L <= __cplusplus
+-# define YY_NULL nullptr
+-# else
+-# define YY_NULL 0
+-# endif
+-# endif
++/* Enabling traces. */
++#ifndef YYDEBUG
++# define YYDEBUG 0
++#endif
+
+ /* Enabling verbose error messages. */
+ #ifdef YYERROR_VERBOSE
+@@ -335,18 +337,12 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+
+-/* In a future release of Bison, this section will be replaced
+- by #include "zend_ini_parser.h". */
+-#ifndef INI_ZEND_ZEND_INI_PARSER_H
+-# define INI_ZEND_ZEND_INI_PARSER_H
+-/* Enabling traces. */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
+-#if YYDEBUG
+-extern int ini_debug;
++/* Enabling the token table. */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
+ #endif
+
++
+ /* Tokens. */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+@@ -387,6 +383,7 @@
+
+
+
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef int YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -395,22 +392,6 @@
+ #endif
+
+
+-#ifdef YYPARSE_PARAM
+-#if defined __STDC__ || defined __cplusplus
+-int ini_parse (void *YYPARSE_PARAM);
+-#else
+-int ini_parse ();
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if defined __STDC__ || defined __cplusplus
+-int ini_parse (void);
+-#else
+-int ini_parse ();
+-#endif
+-#endif /* ! YYPARSE_PARAM */
+-
+-#endif /* !INI_ZEND_ZEND_INI_PARSER_H */
+-
+ /* Copy the second part of user declarations. */
+
+
+@@ -463,7 +444,7 @@
+ #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+ #ifndef YY_
+-# if defined YYENABLE_NLS && YYENABLE_NLS
++# if YYENABLE_NLS
+ # if ENABLE_NLS
+ # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+ # define YY_(msgid) dgettext ("bison-runtime", msgid)
+@@ -516,12 +497,11 @@
+ # define alloca _alloca
+ # else
+ # define YYSTACK_ALLOC alloca
+-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+- /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+-# ifndef EXIT_SUCCESS
+-# define EXIT_SUCCESS 0
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
+ # endif
+ # endif
+ # endif
+@@ -544,24 +524,24 @@
+ # ifndef YYSTACK_ALLOC_MAXIMUM
+ # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+ # endif
+-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
++# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-# ifndef EXIT_SUCCESS
+-# define EXIT_SUCCESS 0
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
+ # endif
+ # endif
+ # ifndef YYMALLOC
+ # define YYMALLOC malloc
+-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ # endif
+@@ -590,7 +570,23 @@
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+-# define YYCOPY_NEEDED 1
++/* Copy COUNT objects from FROM to TO. The source and destination do
++ not overlap. */
++# ifndef YYCOPY
++# if defined __GNUC__ && 1 < __GNUC__
++# define YYCOPY(To, From, Count) \
++ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
++# else
++# define YYCOPY(To, From, Count) \
++ do \
++ { \
++ YYSIZE_T yyi; \
++ for (yyi = 0; yyi < (Count); yyi++) \
++ (To)[yyi] = (From)[yyi]; \
++ } \
++ while (YYID (0))
++# endif
++# endif
+
+ /* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+@@ -610,26 +606,6 @@
+
+ #endif
+
+-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+-/* Copy COUNT objects from SRC to DST. The source and destination do
+- not overlap. */
+-# ifndef YYCOPY
+-# if defined __GNUC__ && 1 < __GNUC__
+-# define YYCOPY(Dst, Src, Count) \
+- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+-# else
+-# define YYCOPY(Dst, Src, Count) \
+- do \
+- { \
+- YYSIZE_T yyi; \
+- for (yyi = 0; yyi < (Count); yyi++) \
+- (Dst)[yyi] = (Src)[yyi]; \
+- } \
+- while (YYID (0))
+-# endif
+-# endif
+-#endif /* !YYCOPY_NEEDED */
+-
+ /* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 2
+ /* YYLAST -- Last index in YYTABLE. */
+@@ -725,7 +701,7 @@
+ };
+ #endif
+
+-#if YYDEBUG || YYERROR_VERBOSE || 0
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+ /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+ static const char *const yytname[] =
+@@ -739,7 +715,7 @@
+ "$accept", "statement_list", "statement", "section_string_or_value",
+ "string_or_value", "option_offset", "encapsed_list",
+ "var_string_list_section", "var_string_list", "expr", "cfg_var_ref",
+- "constant_literal", "constant_string", YY_NULL
++ "constant_literal", "constant_string", 0
+ };
+ #endif
+
+@@ -776,8 +752,8 @@
+ 1, 1, 1, 1, 1, 1, 1, 1, 1
+ };
+
+-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+- Performed when YYTABLE doesn't specify something else to do. Zero
++/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
++ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+ static const yytype_uint8 yydefact[] =
+ {
+@@ -820,7 +796,8 @@
+
+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+- number is the opposite. If YYTABLE_NINF, syntax error. */
++ number is the opposite. If zero, do what YYDEFACT says.
++ If YYTABLE_NINF, syntax error. */
+ #define YYTABLE_NINF -1
+ static const yytype_uint8 yytable[] =
+ {
+@@ -837,12 +814,6 @@
+ 0, 0, 4, 5, 0, 47, 0, 68, 0, 6
+ };
+
+-#define yypact_value_is_default(yystate) \
+- ((yystate) == (-36))
+-
+-#define yytable_value_is_error(yytable_value) \
+- YYID (0)
+-
+ static const yytype_int8 yycheck[] =
+ {
+ 3, 25, 37, 38, 4, 5, 6, 7, 8, 33,
+@@ -883,33 +854,24 @@
+
+ /* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+- Once GCC version 2 has supplanted version 1, this can go. However,
+- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+- discussed. */
++ Once GCC version 2 has supplanted version 1, this can go. */
+
+ #define YYFAIL goto yyerrlab
+-#if defined YYFAIL
+- /* This is here to suppress warnings from the GCC cpp's
+- -Wunused-macros. Normally we don't worry about that warning, but
+- some users do, and we want to make it easy for users to remove
+- YYFAIL uses, which will produce warnings from Bison 2.5. */
+-#endif
+
+ #define YYRECOVERING() (!!yyerrstatus)
+
+-#define YYBACKUP(Token, Value) \
+-do \
+- if (yychar == YYEMPTY) \
+- { \
+- yychar = (Token); \
+- yylval = (Value); \
+- YYPOPSTACK (yylen); \
+- yystate = *yyssp; \
+- goto yybackup; \
+- } \
+- else \
+- { \
++#define YYBACKUP(Token, Value) \
++do \
++ if (yychar == YYEMPTY && yylen == 1) \
++ { \
++ yychar = (Token); \
++ yylval = (Value); \
++ yytoken = YYTRANSLATE (yychar); \
++ YYPOPSTACK (1); \
++ goto yybackup; \
++ } \
++ else \
++ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+@@ -919,38 +881,46 @@
+ #define YYTERROR 1
+ #define YYERRCODE 256
+
++
+ /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N) \
+- do \
+- if (YYID (N)) \
+- { \
+- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+- } \
+- else \
+- { \
+- (Current).first_line = (Current).last_line = \
+- YYRHSLOC (Rhs, 0).last_line; \
+- (Current).first_column = (Current).last_column = \
+- YYRHSLOC (Rhs, 0).last_column; \
+- } \
++# define YYLLOC_DEFAULT(Current, Rhs, N) \
++ do \
++ if (YYID (N)) \
++ { \
++ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
++ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
++ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
++ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
++ } \
++ else \
++ { \
++ (Current).first_line = (Current).last_line = \
++ YYRHSLOC (Rhs, 0).last_line; \
++ (Current).first_column = (Current).last_column = \
++ YYRHSLOC (Rhs, 0).last_column; \
++ } \
+ while (YYID (0))
+ #endif
+
+-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+-
+-
+-/* This macro is provided for backward compatibility. */
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++ This macro was not mandated originally: define only if we know
++ we won't break user code: when these are the locations we know. */
+
+ #ifndef YY_LOCATION_PRINT
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# if YYLTYPE_IS_TRIVIAL
++# define YY_LOCATION_PRINT(File, Loc) \
++ fprintf (File, "%d.%d-%d.%d", \
++ (Loc).first_line, (Loc).first_column, \
++ (Loc).last_line, (Loc).last_column)
++# else
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+
+
+@@ -1005,8 +975,6 @@
+ YYSTYPE const * const yyvaluep;
+ #endif
+ {
+- FILE *yyo = yyoutput;
+- YYUSE (yyo);
+ if (!yyvaluep)
+ return;
+ # ifdef YYPRINT
+@@ -1144,6 +1112,7 @@
+ # define YYMAXDEPTH 10000
+ #endif
+
++
+
+ #if YYERROR_VERBOSE
+
+@@ -1246,142 +1215,115 @@
+ }
+ # endif
+
+-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+- about the unexpected token YYTOKEN for the state stack whose top is
+- YYSSP.
+-
+- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+- not large enough to hold the message. In that case, also set
+- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+- required number of bytes is too large to store. */
+-static int
+-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+- yytype_int16 *yyssp, int yytoken)
++/* Copy into YYRESULT an error message about the unexpected token
++ YYCHAR while in state YYSTATE. Return the number of bytes copied,
++ including the terminating null byte. If YYRESULT is null, do not
++ copy anything; just return the number of bytes that would be
++ copied. As a special case, return 0 if an ordinary "syntax error"
++ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
++ size calculation. */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+- YYSIZE_T yysize = yysize0;
+- YYSIZE_T yysize1;
+- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+- /* Internationalized format string. */
+- const char *yyformat = YY_NULL;
+- /* Arguments of yyformat. */
+- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+- /* Number of reported tokens (one for the "unexpected", one per
+- "expected"). */
+- int yycount = 0;
+-
+- /* There are many possibilities here to consider:
+- - Assume YYFAIL is not used. It's too flawed to consider. See
+- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+- for details. YYERROR is fine as it does not invoke this
+- function.
+- - If this state is a consistent state with a default action, then
+- the only way this function was invoked is if the default action
+- is an error action. In that case, don't check for expected
+- tokens because there are none.
+- - The only way there can be no lookahead present (in yychar) is if
+- this state is a consistent state with a default action. Thus,
+- detecting the absence of a lookahead is sufficient to determine
+- that there is no unexpected or expected token to report. In that
+- case, just report a simple "syntax error".
+- - Don't assume there isn't a lookahead just because this state is a
+- consistent state with a default action. There might have been a
+- previous inconsistent state, consistent state with a non-default
+- action, or user semantic action that manipulated yychar.
+- - Of course, the expected token list depends on states to have
+- correct lookahead information, and it depends on the parser not
+- to perform extra reductions after fetching a lookahead from the
+- scanner and before detecting a syntax error. Thus, state merging
+- (from LALR or IELR) and default reductions corrupt the expected
+- token list. However, the list is correct for canonical LR with
+- one exception: it will still contain any token that will not be
+- accepted due to an error action in a later state.
+- */
+- if (yytoken != YYEMPTY)
+- {
+- int yyn = yypact[*yyssp];
+- yyarg[yycount++] = yytname[yytoken];
+- if (!yypact_value_is_default (yyn))
+- {
+- /* Start YYX at -YYN if negative to avoid negative indexes in
+- YYCHECK. In other words, skip the first -YYN actions for
+- this state because they are default actions. */
+- int yyxbegin = yyn < 0 ? -yyn : 0;
+- /* Stay within bounds of both yycheck and yytname. */
+- int yychecklim = YYLAST - yyn + 1;
+- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+- int yyx;
+-
+- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+- && !yytable_value_is_error (yytable[yyx + yyn]))
+- {
+- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+- {
+- yycount = 1;
+- yysize = yysize0;
+- break;
+- }
+- yyarg[yycount++] = yytname[yyx];
+- yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+- if (! (yysize <= yysize1
+- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+- return 2;
+- yysize = yysize1;
+- }
+- }
+- }
++ int yyn = yypact[yystate];
+
+- switch (yycount)
++ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++ return 0;
++ else
+ {
+-# define YYCASE_(N, S) \
+- case N: \
+- yyformat = S; \
+- break
+- YYCASE_(0, YY_("syntax error"));
+- YYCASE_(1, YY_("syntax error, unexpected %s"));
+- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+-# undef YYCASE_
+- }
++ int yytype = YYTRANSLATE (yychar);
++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++ YYSIZE_T yysize = yysize0;
++ YYSIZE_T yysize1;
++ int yysize_overflow = 0;
++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++ int yyx;
++
++# if 0
++ /* This is so xgettext sees the translatable formats that are
++ constructed on the fly. */
++ YY_("syntax error, unexpected %s");
++ YY_("syntax error, unexpected %s, expecting %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
++# endif
++ char *yyfmt;
++ char const *yyf;
++ static char const yyunexpected[] = "syntax error, unexpected %s";
++ static char const yyexpecting[] = ", expecting %s";
++ static char const yyor[] = " or %s";
++ char yyformat[sizeof yyunexpected
++ + sizeof yyexpecting - 1
++ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++ * (sizeof yyor - 1))];
++ char const *yyprefix = yyexpecting;
++
++ /* Start YYX at -YYN if negative to avoid negative indexes in
++ YYCHECK. */
++ int yyxbegin = yyn < 0 ? -yyn : 0;
++
++ /* Stay within bounds of both yycheck and yytname. */
++ int yychecklim = YYLAST - yyn + 1;
++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++ int yycount = 1;
+
+- yysize1 = yysize + yystrlen (yyformat);
+- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+- return 2;
+- yysize = yysize1;
++ yyarg[0] = yytname[yytype];
++ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+- if (*yymsg_alloc < yysize)
+- {
+- *yymsg_alloc = 2 * yysize;
+- if (! (yysize <= *yymsg_alloc
+- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+- return 1;
+- }
++ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++ {
++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++ {
++ yycount = 1;
++ yysize = yysize0;
++ yyformat[sizeof yyunexpected - 1] = '\0';
++ break;
++ }
++ yyarg[yycount++] = yytname[yyx];
++ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++ yyfmt = yystpcpy (yyfmt, yyprefix);
++ yyprefix = yyor;
++ }
+
+- /* Avoid sprintf, as that infringes on the user's name space.
+- Don't have undefined behavior even if the translation
+- produced a string with the wrong number of "%s"s. */
+- {
+- char *yyp = *yymsg;
+- int yyi = 0;
+- while ((*yyp = *yyformat) != '\0')
+- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+- {
+- yyp += yytnamerr (yyp, yyarg[yyi++]);
+- yyformat += 2;
+- }
+- else
+- {
+- yyp++;
+- yyformat++;
+- }
+- }
+- return 0;
++ yyf = YY_(yyformat);
++ yysize1 = yysize + yystrlen (yyf);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++
++ if (yysize_overflow)
++ return YYSIZE_MAXIMUM;
++
++ if (yyresult)
++ {
++ /* Avoid sprintf, as that infringes on the user's name space.
++ Don't have undefined behavior even if the translation
++ produced a string with the wrong number of "%s"s. */
++ char *yyp = yyresult;
++ int yyi = 0;
++ while ((*yyp = *yyf) != '\0')
++ {
++ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++ {
++ yyp += yytnamerr (yyp, yyarg[yyi++]);
++ yyf += 2;
++ }
++ else
++ {
++ yyp++;
++ yyf++;
++ }
++ }
++ }
++ return yysize;
++ }
+ }
+ #endif /* YYERROR_VERBOSE */
++
+
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol. |
+@@ -1414,12 +1356,28 @@
+ }
+ }
+
++/* Prevent warnings from -Wmissing-prototypes. */
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
++
++
+
+
+
+-/*----------.
+-| yyparse. |
+-`----------*/
++/*-------------------------.
++| yyparse or yypush_parse. |
++`-------------------------*/
+
+ #ifdef YYPARSE_PARAM
+ #if (defined __STDC__ || defined __C99__FUNC__ \
+@@ -1460,7 +1418,7 @@
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+- Refer to the stacks through separate pointers, to allow yyoverflow
++ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+@@ -1514,6 +1472,7 @@
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
++
+ goto yysetstate;
+
+ /*------------------------------------------------------------.
+@@ -1605,7 +1564,7 @@
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+- if (yypact_value_is_default (yyn))
++ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+@@ -1636,8 +1595,8 @@
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+- if (yytable_value_is_error (yyn))
+- goto yyerrlab;
++ if (yyn == 0 || yyn == YYTABLE_NINF)
++ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+@@ -1935,17 +1894,6 @@
+
+ default: break;
+ }
+- /* User semantic actions sometimes alter yychar, and that requires
+- that yytoken be updated with the new translation. We take the
+- approach of translating immediately before every use of yytoken.
+- One alternative is translating here after every semantic action,
+- but that translation would be missed if the semantic action invokes
+- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+- incorrect destructor might then be invoked immediately. In the
+- case of YYERROR or YYBACKUP, subsequent parser actions might lead
+- to an incorrect destructor call or verbose syntax error message
+- before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+@@ -1973,10 +1921,6 @@
+ | yyerrlab -- here on detecting error |
+ `------------------------------------*/
+ yyerrlab:
+- /* Make sure we have latest lookahead translation. See comments at
+- user semantic actions for why this is necessary. */
+- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+-
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+@@ -1984,36 +1928,37 @@
+ #if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+ #else
+-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+- yyssp, yytoken)
+ {
+- char const *yymsgp = YY_("syntax error");
+- int yysyntax_error_status;
+- yysyntax_error_status = YYSYNTAX_ERROR;
+- if (yysyntax_error_status == 0)
+- yymsgp = yymsg;
+- else if (yysyntax_error_status == 1)
+- {
+- if (yymsg != yymsgbuf)
+- YYSTACK_FREE (yymsg);
+- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+- if (!yymsg)
+- {
+- yymsg = yymsgbuf;
+- yymsg_alloc = sizeof yymsgbuf;
+- yysyntax_error_status = 2;
+- }
+- else
+- {
+- yysyntax_error_status = YYSYNTAX_ERROR;
+- yymsgp = yymsg;
+- }
+- }
+- yyerror (yymsgp);
+- if (yysyntax_error_status == 2)
+- goto yyexhaustedlab;
++ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++ {
++ YYSIZE_T yyalloc = 2 * yysize;
++ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++ yyalloc = YYSTACK_ALLOC_MAXIMUM;
++ if (yymsg != yymsgbuf)
++ YYSTACK_FREE (yymsg);
++ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++ if (yymsg)
++ yymsg_alloc = yyalloc;
++ else
++ {
++ yymsg = yymsgbuf;
++ yymsg_alloc = sizeof yymsgbuf;
++ }
++ }
++
++ if (0 < yysize && yysize <= yymsg_alloc)
++ {
++ (void) yysyntax_error (yymsg, yystate, yychar);
++ yyerror (yymsg);
++ }
++ else
++ {
++ yyerror (YY_("syntax error"));
++ if (yysize != 0)
++ goto yyexhaustedlab;
++ }
+ }
+-# undef YYSYNTAX_ERROR
+ #endif
+ }
+
+@@ -2072,7 +2017,7 @@
+ for (;;)
+ {
+ yyn = yypact[yystate];
+- if (!yypact_value_is_default (yyn))
++ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+@@ -2119,7 +2064,7 @@
+ yyresult = 1;
+ goto yyreturn;
+
+-#if !defined yyoverflow || YYERROR_VERBOSE
++#if !defined(yyoverflow) || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here. |
+ `-------------------------------------------------*/
+@@ -2131,13 +2076,8 @@
+
+ yyreturn:
+ if (yychar != YYEMPTY)
+- {
+- /* Make sure we have latest lookahead translation. See comments at
+- user semantic actions for why this is necessary. */
+- yytoken = YYTRANSLATE (yychar);
+- yydestruct ("Cleanup: discarding lookahead",
+- yytoken, &yylval);
+- }
++ yydestruct ("Cleanup: discarding lookahead",
++ yytoken, &yylval);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+diff -ru php-5.5.0beta1/Zend/zend_ini_parser.h php5.5-201303201430/Zend/zend_ini_parser.h
+--- php-5.5.0beta1/Zend/zend_ini_parser.h 2013-03-20 15:26:53.000000000 +0100
++++ php5.5-201303201430/Zend/zend_ini_parser.h 2013-03-20 15:37:18.000000000 +0100
+@@ -1,8 +1,10 @@
+-/* A Bison parser, made by GNU Bison 2.6.1. */
+
+-/* Bison interface for Yacc-like parsers in C
++/* A Bison parser, made by GNU Bison 2.4.1. */
++
++/* Skeleton interface for Bison's Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -30,15 +32,6 @@
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+-#ifndef INI_ZEND_ZEND_INI_PARSER_H
+-# define INI_ZEND_ZEND_INI_PARSER_H
+-/* Enabling traces. */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
+-#if YYDEBUG
+-extern int ini_debug;
+-#endif
+
+ /* Tokens. */
+ #ifndef YYTOKENTYPE
+@@ -80,6 +73,7 @@
+
+
+
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef int YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -88,18 +82,5 @@
+ #endif
+
+
+-#ifdef YYPARSE_PARAM
+-#if defined __STDC__ || defined __cplusplus
+-int ini_parse (void *YYPARSE_PARAM);
+-#else
+-int ini_parse ();
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if defined __STDC__ || defined __cplusplus
+-int ini_parse (void);
+-#else
+-int ini_parse ();
+-#endif
+-#endif /* ! YYPARSE_PARAM */
+
+-#endif /* !INI_ZEND_ZEND_INI_PARSER_H */
++
+diff -ru php-5.5.0beta1/Zend/zend_ini_scanner.c php5.5-201303201430/Zend/zend_ini_scanner.c
+--- php-5.5.0beta1/Zend/zend_ini_scanner.c 2013-03-20 15:09:27.000000000 +0100
++++ php5.5-201303201430/Zend/zend_ini_scanner.c 2013-03-20 15:37:18.000000000 +0100
+@@ -1,5 +1,4 @@
+ /* Generated by re2c 0.13.5 */
+-#line 1 "Zend/zend_ini_scanner.l"
+ /*
+ +----------------------------------------------------------------------+
+ | Zend Engine |
+@@ -333,7 +332,6 @@
+ }
+ }
+
+-#line 337 "Zend/zend_ini_scanner.c"
+ {
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+@@ -462,7 +460,6 @@
+ yy3:
+ YYDEBUG(3, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 429 "Zend/zend_ini_scanner.l"
+ { /* Get option name */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+@@ -472,7 +469,6 @@
+
+ RETURN_TOKEN(TC_LABEL, yytext, yyleng);
+ }
+-#line 476 "Zend/zend_ini_scanner.c"
+ yy4:
+ YYDEBUG(4, *YYCURSOR);
+ yyaccept = 0;
+@@ -481,24 +477,20 @@
+ yy5:
+ YYDEBUG(5, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 575 "Zend/zend_ini_scanner.l"
+ {
+ /* eat whitespace */
+ goto restart;
+ }
+-#line 490 "Zend/zend_ini_scanner.c"
+ yy6:
+ YYDEBUG(6, *YYCURSOR);
+ ++YYCURSOR;
+ yy7:
+ YYDEBUG(7, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 580 "Zend/zend_ini_scanner.l"
+ {
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 502 "Zend/zend_ini_scanner.c"
+ yy8:
+ YYDEBUG(8, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -533,11 +525,9 @@
+ ++YYCURSOR;
+ YYDEBUG(11, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 503 "Zend/zend_ini_scanner.l"
+ { /* Disallow these chars outside option values */
+ return yytext[0];
+ }
+-#line 541 "Zend/zend_ini_scanner.c"
+ yy12:
+ YYDEBUG(12, *YYCURSOR);
+ yyaccept = 1;
+@@ -554,11 +544,9 @@
+ goto yy54;
+ YYDEBUG(15, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 603 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+ }
+-#line 562 "Zend/zend_ini_scanner.c"
+ yy16:
+ YYDEBUG(16, *YYCURSOR);
+ ++YYCURSOR;
+@@ -567,7 +555,6 @@
+ yy17:
+ YYDEBUG(17, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 439 "Zend/zend_ini_scanner.l"
+ { /* Start option value */
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
+ yy_push_state(ST_RAW TSRMLS_CC);
+@@ -576,7 +563,6 @@
+ }
+ return '=';
+ }
+-#line 580 "Zend/zend_ini_scanner.c"
+ yy18:
+ YYDEBUG(18, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -632,7 +618,6 @@
+ ++YYCURSOR;
+ YYDEBUG(24, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 358 "Zend/zend_ini_scanner.l"
+ { /* Section start */
+ /* Enter section data lookup state */
+ if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
+@@ -642,7 +627,6 @@
+ }
+ return TC_SECTION;
+ }
+-#line 646 "Zend/zend_ini_scanner.c"
+ yy25:
+ YYDEBUG(25, *YYCURSOR);
+ ++YYCURSOR;
+@@ -672,7 +656,6 @@
+ }
+ YYDEBUG(30, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 383 "Zend/zend_ini_scanner.l"
+ { /* Start of option with offset */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+@@ -685,7 +668,6 @@
+
+ RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
+ }
+-#line 689 "Zend/zend_ini_scanner.c"
+ yy31:
+ YYDEBUG(31, *YYCURSOR);
+ ++YYCURSOR;
+@@ -733,11 +715,9 @@
+ yy33:
+ YYDEBUG(33, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 421 "Zend/zend_ini_scanner.l"
+ { /* TRUE value (when used outside option value/offset this causes parse error!) */
+ RETURN_TOKEN(BOOL_TRUE, "1", 1);
+ }
+-#line 741 "Zend/zend_ini_scanner.c"
+ yy34:
+ YYDEBUG(34, *YYCURSOR);
+ ++YYCURSOR;
+@@ -807,11 +787,9 @@
+ yy41:
+ YYDEBUG(41, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 425 "Zend/zend_ini_scanner.l"
+ { /* FALSE value (when used outside option value/offset this causes parse error!)*/
+ RETURN_TOKEN(BOOL_FALSE, "", 0);
+ }
+-#line 815 "Zend/zend_ini_scanner.c"
+ yy42:
+ YYDEBUG(42, *YYCURSOR);
+ ++YYCURSOR;
+@@ -926,13 +904,11 @@
+ yy56:
+ YYDEBUG(56, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 585 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 936 "Zend/zend_ini_scanner.c"
+ yy57:
+ YYDEBUG(57, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1012,14 +988,12 @@
+ yy65:
+ YYDEBUG(65, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 591 "Zend/zend_ini_scanner.l"
+ { /* #Comment */
+ zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno));
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 1023 "Zend/zend_ini_scanner.c"
+ yy66:
+ YYDEBUG(66, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1159,7 +1133,6 @@
+ yy76:
+ YYDEBUG(76, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 535 "Zend/zend_ini_scanner.l"
+ { /* Escape double quoted string contents */
+ if (YYCURSOR > YYLIMIT) {
+ return 0;
+@@ -1195,7 +1168,6 @@
+ zend_ini_escape_string(ini_lval, yytext, yyleng, '"' TSRMLS_CC);
+ return TC_QUOTED_STRING;
+ }
+-#line 1199 "Zend/zend_ini_scanner.c"
+ yy77:
+ YYDEBUG(77, *YYCURSOR);
+ ++YYCURSOR;
+@@ -1204,12 +1176,10 @@
+ yy78:
+ YYDEBUG(78, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 530 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string ends */
+ yy_pop_state(TSRMLS_C);
+ return '"';
+ }
+-#line 1213 "Zend/zend_ini_scanner.c"
+ yy79:
+ YYDEBUG(79, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1218,12 +1188,10 @@
+ ++YYCURSOR;
+ YYDEBUG(81, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 401 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+ }
+-#line 1227 "Zend/zend_ini_scanner.c"
+ yy82:
+ YYDEBUG(82, *YYCURSOR);
+ ++YYCURSOR;
+@@ -1323,11 +1291,9 @@
+ yy87:
+ YYDEBUG(87, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 521 "Zend/zend_ini_scanner.l"
+ { /* Get rest as section/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+ }
+-#line 1331 "Zend/zend_ini_scanner.c"
+ yy88:
+ YYDEBUG(88, *YYCURSOR);
+ yyaccept = 0;
+@@ -1344,23 +1310,19 @@
+ yy90:
+ YYDEBUG(90, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 603 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+ }
+-#line 1352 "Zend/zend_ini_scanner.c"
+ yy91:
+ YYDEBUG(91, *YYCURSOR);
+ ++YYCURSOR;
+ yy92:
+ YYDEBUG(92, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 525 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+ }
+-#line 1364 "Zend/zend_ini_scanner.c"
+ yy93:
+ YYDEBUG(93, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1422,11 +1384,9 @@
+ yy98:
+ YYDEBUG(98, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 499 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+ }
+-#line 1430 "Zend/zend_ini_scanner.c"
+ yy99:
+ YYDEBUG(99, *YYCURSOR);
+ yyaccept = 3;
+@@ -1452,11 +1412,9 @@
+ yy100:
+ YYDEBUG(100, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 495 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+ }
+-#line 1460 "Zend/zend_ini_scanner.c"
+ yy101:
+ YYDEBUG(101, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1467,12 +1425,10 @@
+ yy103:
+ YYDEBUG(103, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 396 "Zend/zend_ini_scanner.l"
+ { /* End of section or an option offset */
+ BEGIN(INITIAL);
+ return ']';
+ }
+-#line 1476 "Zend/zend_ini_scanner.c"
+ yy104:
+ YYDEBUG(104, *YYCURSOR);
+ yyaccept = 0;
+@@ -1762,7 +1718,6 @@
+ ++YYCURSOR;
+ YYDEBUG(128, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 368 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+@@ -1771,18 +1726,15 @@
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ }
+-#line 1775 "Zend/zend_ini_scanner.c"
+ yy129:
+ YYDEBUG(129, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(130, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 401 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+ }
+-#line 1786 "Zend/zend_ini_scanner.c"
+ yy131:
+ YYDEBUG(131, *YYCURSOR);
+ yyaccept = 0;
+@@ -1887,19 +1839,16 @@
+ ++YYCURSOR;
+ YYDEBUG(138, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 598 "Zend/zend_ini_scanner.l"
+ { /* End of option value (if EOF is reached before EOL */
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+ }
+-#line 1896 "Zend/zend_ini_scanner.c"
+ yy139:
+ YYDEBUG(139, *YYCURSOR);
+ ++YYCURSOR;
+ yy140:
+ YYDEBUG(140, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 448 "Zend/zend_ini_scanner.l"
+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
+ char *sc = NULL;
+ while (YYCURSOR < YYLIMIT) {
+@@ -1936,7 +1885,6 @@
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ }
+-#line 1940 "Zend/zend_ini_scanner.c"
+ yy141:
+ YYDEBUG(141, *YYCURSOR);
+ yyaccept = 0;
+@@ -1961,13 +1909,11 @@
+ yy143:
+ YYDEBUG(143, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 489 "Zend/zend_ini_scanner.l"
+ { /* End of option value */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 1971 "Zend/zend_ini_scanner.c"
+ yy144:
+ YYDEBUG(144, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -1995,13 +1941,11 @@
+ yy149:
+ YYDEBUG(149, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 585 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 2005 "Zend/zend_ini_scanner.c"
+ yy150:
+ YYDEBUG(150, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -2030,12 +1974,10 @@
+ }
+ YYDEBUG(154, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 575 "Zend/zend_ini_scanner.l"
+ {
+ /* eat whitespace */
+ goto restart;
+ }
+-#line 2039 "Zend/zend_ini_scanner.c"
+ yy155:
+ YYDEBUG(155, *YYCURSOR);
+ ++YYCURSOR;
+@@ -2095,21 +2037,17 @@
+ yy159:
+ YYDEBUG(159, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 485 "Zend/zend_ini_scanner.l"
+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ }
+-#line 2103 "Zend/zend_ini_scanner.c"
+ yy160:
+ YYDEBUG(160, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(161, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 603 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+ }
+-#line 2113 "Zend/zend_ini_scanner.c"
+ yy162:
+ YYDEBUG(162, *YYCURSOR);
+ ++YYCURSOR;
+@@ -2118,13 +2056,11 @@
+ yy163:
+ YYDEBUG(163, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 377 "Zend/zend_ini_scanner.l"
+ { /* End of section */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return ']';
+ }
+-#line 2128 "Zend/zend_ini_scanner.c"
+ yy164:
+ YYDEBUG(164, *YYCURSOR);
+ ++YYCURSOR;
+@@ -2246,11 +2182,9 @@
+ yy173:
+ YYDEBUG(173, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 521 "Zend/zend_ini_scanner.l"
+ { /* Get rest as section/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+ }
+-#line 2254 "Zend/zend_ini_scanner.c"
+ yy174:
+ YYDEBUG(174, *YYCURSOR);
+ yyaccept = 0;
+@@ -2269,23 +2203,19 @@
+ yy176:
+ YYDEBUG(176, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 603 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+ }
+-#line 2277 "Zend/zend_ini_scanner.c"
+ yy177:
+ YYDEBUG(177, *YYCURSOR);
+ ++YYCURSOR;
+ yy178:
+ YYDEBUG(178, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 525 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+ }
+-#line 2289 "Zend/zend_ini_scanner.c"
+ yy179:
+ YYDEBUG(179, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -2347,11 +2277,9 @@
+ yy184:
+ YYDEBUG(184, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 499 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+ }
+-#line 2355 "Zend/zend_ini_scanner.c"
+ yy185:
+ YYDEBUG(185, *YYCURSOR);
+ yyaccept = 3;
+@@ -2377,11 +2305,9 @@
+ yy186:
+ YYDEBUG(186, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 495 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+ }
+-#line 2385 "Zend/zend_ini_scanner.c"
+ yy187:
+ YYDEBUG(187, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -2394,13 +2320,11 @@
+ yy189:
+ YYDEBUG(189, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 377 "Zend/zend_ini_scanner.l"
+ { /* End of section */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return ']';
+ }
+-#line 2404 "Zend/zend_ini_scanner.c"
+ yy190:
+ YYDEBUG(190, *YYCURSOR);
+ ++YYCURSOR;
+@@ -2712,7 +2636,6 @@
+ ++YYCURSOR;
+ YYDEBUG(218, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 368 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+@@ -2721,18 +2644,15 @@
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ }
+-#line 2725 "Zend/zend_ini_scanner.c"
+ yy219:
+ YYDEBUG(219, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(220, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 401 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+ }
+-#line 2736 "Zend/zend_ini_scanner.c"
+ yy221:
+ YYDEBUG(221, *YYCURSOR);
+ yyaccept = 0;
+@@ -2912,12 +2832,10 @@
+ yy227:
+ YYDEBUG(227, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 598 "Zend/zend_ini_scanner.l"
+ { /* End of option value (if EOF is reached before EOL */
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+ }
+-#line 2921 "Zend/zend_ini_scanner.c"
+ yy228:
+ YYDEBUG(228, *YYCURSOR);
+ yyaccept = 0;
+@@ -2926,11 +2844,9 @@
+ yy229:
+ YYDEBUG(229, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 517 "Zend/zend_ini_scanner.l"
+ { /* Get everything else as option/offset value */
+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
+ }
+-#line 2934 "Zend/zend_ini_scanner.c"
+ yy230:
+ YYDEBUG(230, *YYCURSOR);
+ yyaccept = 1;
+@@ -2939,24 +2855,20 @@
+ yy231:
+ YYDEBUG(231, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 571 "Zend/zend_ini_scanner.l"
+ {
+ RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
+ }
+-#line 2947 "Zend/zend_ini_scanner.c"
+ yy232:
+ YYDEBUG(232, *YYCURSOR);
+ ++YYCURSOR;
+ yy233:
+ YYDEBUG(233, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 489 "Zend/zend_ini_scanner.l"
+ { /* End of option value */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 2960 "Zend/zend_ini_scanner.c"
+ yy234:
+ YYDEBUG(234, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -2970,23 +2882,19 @@
+ yy236:
+ YYDEBUG(236, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 507 "Zend/zend_ini_scanner.l"
+ { /* Boolean operators */
+ return yytext[0];
+ }
+-#line 2978 "Zend/zend_ini_scanner.c"
+ yy237:
+ YYDEBUG(237, *YYCURSOR);
+ ++YYCURSOR;
+ yy238:
+ YYDEBUG(238, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 525 "Zend/zend_ini_scanner.l"
+ { /* Double quoted '"' string start */
+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
+ return '"';
+ }
+-#line 2990 "Zend/zend_ini_scanner.c"
+ yy239:
+ YYDEBUG(239, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -3062,11 +2970,9 @@
+ yy244:
+ YYDEBUG(244, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 499 "Zend/zend_ini_scanner.l"
+ { /* Get number option value as string */
+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
+ }
+-#line 3070 "Zend/zend_ini_scanner.c"
+ yy245:
+ YYDEBUG(245, *YYCURSOR);
+ yyaccept = 2;
+@@ -3077,13 +2983,11 @@
+ ++YYCURSOR;
+ YYDEBUG(247, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 511 "Zend/zend_ini_scanner.l"
+ { /* Make = used in option value to trigger error */
+ yyless(0);
+ BEGIN(INITIAL);
+ return END_OF_LINE;
+ }
+-#line 3087 "Zend/zend_ini_scanner.c"
+ yy248:
+ YYDEBUG(248, *YYCURSOR);
+ yyaccept = 4;
+@@ -3119,11 +3023,9 @@
+ yy249:
+ YYDEBUG(249, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 495 "Zend/zend_ini_scanner.l"
+ { /* Get constant option value */
+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
+ }
+-#line 3127 "Zend/zend_ini_scanner.c"
+ yy250:
+ YYDEBUG(250, *YYCURSOR);
+ yyaccept = 4;
+@@ -3615,11 +3517,9 @@
+ yy266:
+ YYDEBUG(266, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 421 "Zend/zend_ini_scanner.l"
+ { /* TRUE value (when used outside option value/offset this causes parse error!) */
+ RETURN_TOKEN(BOOL_TRUE, "1", 1);
+ }
+-#line 3623 "Zend/zend_ini_scanner.c"
+ yy267:
+ YYDEBUG(267, *YYCURSOR);
+ ++YYCURSOR;
+@@ -3819,11 +3719,9 @@
+ yy273:
+ YYDEBUG(273, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 425 "Zend/zend_ini_scanner.l"
+ { /* FALSE value (when used outside option value/offset this causes parse error!)*/
+ RETURN_TOKEN(BOOL_FALSE, "", 0);
+ }
+-#line 3827 "Zend/zend_ini_scanner.c"
+ yy274:
+ YYDEBUG(274, *YYCURSOR);
+ ++YYCURSOR;
+@@ -4199,13 +4097,11 @@
+ yy286:
+ YYDEBUG(286, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 585 "Zend/zend_ini_scanner.l"
+ { /* Comment */
+ BEGIN(INITIAL);
+ SCNG(lineno)++;
+ return END_OF_LINE;
+ }
+-#line 4209 "Zend/zend_ini_scanner.c"
+ yy287:
+ YYDEBUG(287, *YYCURSOR);
+ yych = *++YYCURSOR;
+@@ -4417,7 +4313,6 @@
+ ++YYCURSOR;
+ YYDEBUG(299, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 368 "Zend/zend_ini_scanner.l"
+ { /* Raw string */
+ /* Eat leading and trailing single quotes */
+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
+@@ -4426,18 +4321,15 @@
+ }
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ }
+-#line 4430 "Zend/zend_ini_scanner.c"
+ yy300:
+ YYDEBUG(300, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(301, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 401 "Zend/zend_ini_scanner.l"
+ { /* Variable start */
+ yy_push_state(ST_VARNAME TSRMLS_CC);
+ return TC_DOLLAR_CURLY;
+ }
+-#line 4441 "Zend/zend_ini_scanner.c"
+ yy302:
+ YYDEBUG(302, *YYCURSOR);
+ ++YYCURSOR;
+@@ -4566,7 +4458,6 @@
+ yy312:
+ YYDEBUG(312, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 406 "Zend/zend_ini_scanner.l"
+ { /* Variable name */
+ /* Eat leading whitespace */
+ EAT_LEADING_WHITESPACE();
+@@ -4576,28 +4467,23 @@
+
+ RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
+ }
+-#line 4580 "Zend/zend_ini_scanner.c"
+ yy313:
+ YYDEBUG(313, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(314, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 603 "Zend/zend_ini_scanner.l"
+ {
+ return 0;
+ }
+-#line 4590 "Zend/zend_ini_scanner.c"
+ yy315:
+ YYDEBUG(315, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(316, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+-#line 416 "Zend/zend_ini_scanner.l"
+ { /* Variable end */
+ yy_pop_state(TSRMLS_C);
+ return '}';
+ }
+-#line 4601 "Zend/zend_ini_scanner.c"
+ yy317:
+ YYDEBUG(317, *YYCURSOR);
+ ++YYCURSOR;
+@@ -4611,6 +4497,5 @@
+ goto yy312;
+ }
+ }
+-#line 607 "Zend/zend_ini_scanner.l"
+
+ }
+diff -ru php-5.5.0beta1/Zend/zend_ini_scanner_defs.h php5.5-201303201430/Zend/zend_ini_scanner_defs.h
+--- php-5.5.0beta1/Zend/zend_ini_scanner_defs.h 2013-03-20 15:09:27.000000000 +0100
++++ php5.5-201303201430/Zend/zend_ini_scanner_defs.h 2013-03-20 15:37:18.000000000 +0100
+@@ -1,5 +1,4 @@
+ /* Generated by re2c 0.13.5 */
+-#line 3 "Zend/zend_ini_scanner_defs.h"
+
+ enum YYCONDTYPE {
+ yycINITIAL,
+diff -ru php-5.5.0beta1/Zend/zend_language_parser.c php5.5-201303201430/Zend/zend_language_parser.c
+--- php-5.5.0beta1/Zend/zend_language_parser.c 2013-03-20 15:26:53.000000000 +0100
++++ php5.5-201303201430/Zend/zend_language_parser.c 2013-03-20 15:37:18.000000000 +0100
+@@ -1,8 +1,10 @@
+-/* A Bison parser, made by GNU Bison 2.6.1. */
+
+-/* Bison implementation for Yacc-like parsers in C
++/* A Bison parser, made by GNU Bison 2.4.1. */
++
++/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -44,7 +46,7 @@
+ #define YYBISON 1
+
+ /* Bison version. */
+-#define YYBISON_VERSION "2.6.1"
++#define YYBISON_VERSION "2.4.1"
+
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -58,6 +60,8 @@
+ /* Pull parsers. */
+ #define YYPULL 1
+
++/* Using locations. */
++#define YYLSP_NEEDED 0
+
+ /* Substitute the variable and function names. */
+ #define yyparse zendparse
+@@ -68,6 +72,7 @@
+ #define yydebug zenddebug
+ #define yynerrs zendnerrs
+
++
+ /* Copy the first part of user declarations. */
+
+
+@@ -122,13 +127,10 @@
+
+
+
+-# ifndef YY_NULL
+-# if defined __cplusplus && 201103L <= __cplusplus
+-# define YY_NULL nullptr
+-# else
+-# define YY_NULL 0
+-# endif
+-# endif
++/* Enabling traces. */
++#ifndef YYDEBUG
++# define YYDEBUG 0
++#endif
+
+ /* Enabling verbose error messages. */
+ #ifdef YYERROR_VERBOSE
+@@ -138,18 +140,12 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+
+-/* In a future release of Bison, this section will be replaced
+- by #include "zend_language_parser.h". */
+-#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+-# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+-/* Enabling traces. */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
+-#if YYDEBUG
+-extern int zenddebug;
++/* Enabling the token table. */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
+ #endif
+
++
+ /* Tokens. */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+@@ -422,6 +418,7 @@
+
+
+
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef int YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -430,22 +427,6 @@
+ #endif
+
+
+-#ifdef YYPARSE_PARAM
+-#if defined __STDC__ || defined __cplusplus
+-int zendparse (void *YYPARSE_PARAM);
+-#else
+-int zendparse ();
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if defined __STDC__ || defined __cplusplus
+-int zendparse (void);
+-#else
+-int zendparse ();
+-#endif
+-#endif /* ! YYPARSE_PARAM */
+-
+-#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */
+-
+ /* Copy the second part of user declarations. */
+
+
+@@ -498,7 +479,7 @@
+ #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+ #ifndef YY_
+-# if defined YYENABLE_NLS && YYENABLE_NLS
++# if YYENABLE_NLS
+ # if ENABLE_NLS
+ # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+ # define YY_(msgid) dgettext ("bison-runtime", msgid)
+@@ -551,12 +532,11 @@
+ # define alloca _alloca
+ # else
+ # define YYSTACK_ALLOC alloca
+-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+- /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+-# ifndef EXIT_SUCCESS
+-# define EXIT_SUCCESS 0
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
+ # endif
+ # endif
+ # endif
+@@ -579,24 +559,24 @@
+ # ifndef YYSTACK_ALLOC_MAXIMUM
+ # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+ # endif
+-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
++# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+ # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-# ifndef EXIT_SUCCESS
+-# define EXIT_SUCCESS 0
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
+ # endif
+ # endif
+ # ifndef YYMALLOC
+ # define YYMALLOC malloc
+-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ # endif
+@@ -625,7 +605,23 @@
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+-# define YYCOPY_NEEDED 1
++/* Copy COUNT objects from FROM to TO. The source and destination do
++ not overlap. */
++# ifndef YYCOPY
++# if defined __GNUC__ && 1 < __GNUC__
++# define YYCOPY(To, From, Count) \
++ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
++# else
++# define YYCOPY(To, From, Count) \
++ do \
++ { \
++ YYSIZE_T yyi; \
++ for (yyi = 0; yyi < (Count); yyi++) \
++ (To)[yyi] = (From)[yyi]; \
++ } \
++ while (YYID (0))
++# endif
++# endif
+
+ /* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+@@ -645,26 +641,6 @@
+
+ #endif
+
+-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+-/* Copy COUNT objects from SRC to DST. The source and destination do
+- not overlap. */
+-# ifndef YYCOPY
+-# if defined __GNUC__ && 1 < __GNUC__
+-# define YYCOPY(Dst, Src, Count) \
+- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+-# else
+-# define YYCOPY(Dst, Src, Count) \
+- do \
+- { \
+- YYSIZE_T yyi; \
+- for (yyi = 0; yyi < (Count); yyi++) \
+- (Dst)[yyi] = (Src)[yyi]; \
+- } \
+- while (YYID (0))
+-# endif
+-# endif
+-#endif /* !YYCOPY_NEEDED */
+-
+ /* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 3
+ /* YYLAST -- Last index in YYTABLE. */
+@@ -1032,7 +1008,7 @@
+ };
+ #endif
+
+-#if YYDEBUG || YYERROR_VERBOSE || 0
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+ /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+ static const char *const yytname[] =
+@@ -1157,7 +1133,7 @@
+ "non_empty_array_pair_list", "encaps_list", "encaps_var", "$@75",
+ "encaps_var_offset", "internal_functions_in_yacc", "isset_variables",
+ "$@76", "isset_variable", "class_constant", "static_class_name_scalar",
+- "class_name_scalar", YY_NULL
++ "class_name_scalar", 0
+ };
+ #endif
+
+@@ -1305,8 +1281,8 @@
+ 1, 1, 3, 3, 3, 3
+ };
+
+-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+- Performed when YYTABLE doesn't specify something else to do. Zero
++/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
++ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+ static const yytype_uint16 yydefact[] =
+ {
+@@ -1577,7 +1553,8 @@
+
+ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+- number is the opposite. If YYTABLE_NINF, syntax error. */
++ number is the opposite. If zero, do what YYDEFACT says.
++ If YYTABLE_NINF, syntax error. */
+ #define YYTABLE_NINF -542
+ static const yytype_int16 yytable[] =
+ {
+@@ -2096,12 +2073,6 @@
+ 272, 273, 274, 275, 276, 0, 277
+ };
+
+-#define yypact_value_is_default(yystate) \
+- ((yystate) == (-770))
+-
+-#define yytable_value_is_error(yytable_value) \
+- ((yytable_value) == (-542))
+-
+ static const yytype_int16 yycheck[] =
+ {
+ 24, 25, 4, 126, 28, 24, 25, 4, 11, 28,
+@@ -2738,33 +2709,24 @@
+
+ /* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+- Once GCC version 2 has supplanted version 1, this can go. However,
+- YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+- in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+- discussed. */
++ Once GCC version 2 has supplanted version 1, this can go. */
+
+ #define YYFAIL goto yyerrlab
+-#if defined YYFAIL
+- /* This is here to suppress warnings from the GCC cpp's
+- -Wunused-macros. Normally we don't worry about that warning, but
+- some users do, and we want to make it easy for users to remove
+- YYFAIL uses, which will produce warnings from Bison 2.5. */
+-#endif
+
+ #define YYRECOVERING() (!!yyerrstatus)
+
+-#define YYBACKUP(Token, Value) \
+-do \
+- if (yychar == YYEMPTY) \
+- { \
+- yychar = (Token); \
+- yylval = (Value); \
+- YYPOPSTACK (yylen); \
+- yystate = *yyssp; \
+- goto yybackup; \
+- } \
+- else \
+- { \
++#define YYBACKUP(Token, Value) \
++do \
++ if (yychar == YYEMPTY && yylen == 1) \
++ { \
++ yychar = (Token); \
++ yylval = (Value); \
++ yytoken = YYTRANSLATE (yychar); \
++ YYPOPSTACK (1); \
++ goto yybackup; \
++ } \
++ else \
++ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+@@ -2774,38 +2736,46 @@
+ #define YYTERROR 1
+ #define YYERRCODE 256
+
++
+ /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N) \
+- do \
+- if (YYID (N)) \
+- { \
+- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+- } \
+- else \
+- { \
+- (Current).first_line = (Current).last_line = \
+- YYRHSLOC (Rhs, 0).last_line; \
+- (Current).first_column = (Current).last_column = \
+- YYRHSLOC (Rhs, 0).last_column; \
+- } \
++# define YYLLOC_DEFAULT(Current, Rhs, N) \
++ do \
++ if (YYID (N)) \
++ { \
++ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
++ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
++ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
++ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
++ } \
++ else \
++ { \
++ (Current).first_line = (Current).last_line = \
++ YYRHSLOC (Rhs, 0).last_line; \
++ (Current).first_column = (Current).last_column = \
++ YYRHSLOC (Rhs, 0).last_column; \
++ } \
+ while (YYID (0))
+ #endif
+
+-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+-
+-
+
+-/* This macro is provided for backward compatibility. */
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++ This macro was not mandated originally: define only if we know
++ we won't break user code: when these are the locations we know. */
+
+ #ifndef YY_LOCATION_PRINT
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# if YYLTYPE_IS_TRIVIAL
++# define YY_LOCATION_PRINT(File, Loc) \
++ fprintf (File, "%d.%d-%d.%d", \
++ (Loc).first_line, (Loc).first_column, \
++ (Loc).last_line, (Loc).last_column)
++# else
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+
+
+@@ -2860,8 +2830,6 @@
+ YYSTYPE const * const yyvaluep;
+ #endif
+ {
+- FILE *yyo = yyoutput;
+- YYUSE (yyo);
+ if (!yyvaluep)
+ return;
+ # ifdef YYPRINT
+@@ -2999,6 +2967,7 @@
+ # define YYMAXDEPTH 10000
+ #endif
+
++
+
+ #if YYERROR_VERBOSE
+
+@@ -3101,142 +3070,115 @@
+ }
+ # endif
+
+-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+- about the unexpected token YYTOKEN for the state stack whose top is
+- YYSSP.
+-
+- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+- not large enough to hold the message. In that case, also set
+- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+- required number of bytes is too large to store. */
+-static int
+-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+- yytype_int16 *yyssp, int yytoken)
++/* Copy into YYRESULT an error message about the unexpected token
++ YYCHAR while in state YYSTATE. Return the number of bytes copied,
++ including the terminating null byte. If YYRESULT is null, do not
++ copy anything; just return the number of bytes that would be
++ copied. As a special case, return 0 if an ordinary "syntax error"
++ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
++ size calculation. */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+- YYSIZE_T yysize = yysize0;
+- YYSIZE_T yysize1;
+- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+- /* Internationalized format string. */
+- const char *yyformat = YY_NULL;
+- /* Arguments of yyformat. */
+- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+- /* Number of reported tokens (one for the "unexpected", one per
+- "expected"). */
+- int yycount = 0;
+-
+- /* There are many possibilities here to consider:
+- - Assume YYFAIL is not used. It's too flawed to consider. See
+- <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+- for details. YYERROR is fine as it does not invoke this
+- function.
+- - If this state is a consistent state with a default action, then
+- the only way this function was invoked is if the default action
+- is an error action. In that case, don't check for expected
+- tokens because there are none.
+- - The only way there can be no lookahead present (in yychar) is if
+- this state is a consistent state with a default action. Thus,
+- detecting the absence of a lookahead is sufficient to determine
+- that there is no unexpected or expected token to report. In that
+- case, just report a simple "syntax error".
+- - Don't assume there isn't a lookahead just because this state is a
+- consistent state with a default action. There might have been a
+- previous inconsistent state, consistent state with a non-default
+- action, or user semantic action that manipulated yychar.
+- - Of course, the expected token list depends on states to have
+- correct lookahead information, and it depends on the parser not
+- to perform extra reductions after fetching a lookahead from the
+- scanner and before detecting a syntax error. Thus, state merging
+- (from LALR or IELR) and default reductions corrupt the expected
+- token list. However, the list is correct for canonical LR with
+- one exception: it will still contain any token that will not be
+- accepted due to an error action in a later state.
+- */
+- if (yytoken != YYEMPTY)
+- {
+- int yyn = yypact[*yyssp];
+- yyarg[yycount++] = yytname[yytoken];
+- if (!yypact_value_is_default (yyn))
+- {
+- /* Start YYX at -YYN if negative to avoid negative indexes in
+- YYCHECK. In other words, skip the first -YYN actions for
+- this state because they are default actions. */
+- int yyxbegin = yyn < 0 ? -yyn : 0;
+- /* Stay within bounds of both yycheck and yytname. */
+- int yychecklim = YYLAST - yyn + 1;
+- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+- int yyx;
+-
+- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+- && !yytable_value_is_error (yytable[yyx + yyn]))
+- {
+- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+- {
+- yycount = 1;
+- yysize = yysize0;
+- break;
+- }
+- yyarg[yycount++] = yytname[yyx];
+- yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+- if (! (yysize <= yysize1
+- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+- return 2;
+- yysize = yysize1;
+- }
+- }
+- }
++ int yyn = yypact[yystate];
+
+- switch (yycount)
++ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++ return 0;
++ else
+ {
+-# define YYCASE_(N, S) \
+- case N: \
+- yyformat = S; \
+- break
+- YYCASE_(0, YY_("syntax error"));
+- YYCASE_(1, YY_("syntax error, unexpected %s"));
+- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+-# undef YYCASE_
+- }
++ int yytype = YYTRANSLATE (yychar);
++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++ YYSIZE_T yysize = yysize0;
++ YYSIZE_T yysize1;
++ int yysize_overflow = 0;
++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++ int yyx;
++
++# if 0
++ /* This is so xgettext sees the translatable formats that are
++ constructed on the fly. */
++ YY_("syntax error, unexpected %s");
++ YY_("syntax error, unexpected %s, expecting %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
++# endif
++ char *yyfmt;
++ char const *yyf;
++ static char const yyunexpected[] = "syntax error, unexpected %s";
++ static char const yyexpecting[] = ", expecting %s";
++ static char const yyor[] = " or %s";
++ char yyformat[sizeof yyunexpected
++ + sizeof yyexpecting - 1
++ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++ * (sizeof yyor - 1))];
++ char const *yyprefix = yyexpecting;
++
++ /* Start YYX at -YYN if negative to avoid negative indexes in
++ YYCHECK. */
++ int yyxbegin = yyn < 0 ? -yyn : 0;
++
++ /* Stay within bounds of both yycheck and yytname. */
++ int yychecklim = YYLAST - yyn + 1;
++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++ int yycount = 1;
+
+- yysize1 = yysize + yystrlen (yyformat);
+- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+- return 2;
+- yysize = yysize1;
++ yyarg[0] = yytname[yytype];
++ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+- if (*yymsg_alloc < yysize)
+- {
+- *yymsg_alloc = 2 * yysize;
+- if (! (yysize <= *yymsg_alloc
+- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+- return 1;
+- }
++ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++ {
++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++ {
++ yycount = 1;
++ yysize = yysize0;
++ yyformat[sizeof yyunexpected - 1] = '\0';
++ break;
++ }
++ yyarg[yycount++] = yytname[yyx];
++ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++ yyfmt = yystpcpy (yyfmt, yyprefix);
++ yyprefix = yyor;
++ }
+
+- /* Avoid sprintf, as that infringes on the user's name space.
+- Don't have undefined behavior even if the translation
+- produced a string with the wrong number of "%s"s. */
+- {
+- char *yyp = *yymsg;
+- int yyi = 0;
+- while ((*yyp = *yyformat) != '\0')
+- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+- {
+- yyp += yytnamerr (yyp, yyarg[yyi++]);
+- yyformat += 2;
+- }
+- else
+- {
+- yyp++;
+- yyformat++;
+- }
+- }
+- return 0;
++ yyf = YY_(yyformat);
++ yysize1 = yysize + yystrlen (yyf);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++
++ if (yysize_overflow)
++ return YYSIZE_MAXIMUM;
++
++ if (yyresult)
++ {
++ /* Avoid sprintf, as that infringes on the user's name space.
++ Don't have undefined behavior even if the translation
++ produced a string with the wrong number of "%s"s. */
++ char *yyp = yyresult;
++ int yyi = 0;
++ while ((*yyp = *yyf) != '\0')
++ {
++ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++ {
++ yyp += yytnamerr (yyp, yyarg[yyi++]);
++ yyf += 2;
++ }
++ else
++ {
++ yyp++;
++ yyf++;
++ }
++ }
++ }
++ return yysize;
++ }
+ }
+ #endif /* YYERROR_VERBOSE */
++
+
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol. |
+@@ -3269,12 +3211,28 @@
+ }
+ }
+
++/* Prevent warnings from -Wmissing-prototypes. */
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
++
++
+
+
+
+-/*----------.
+-| yyparse. |
+-`----------*/
++/*-------------------------.
++| yyparse or yypush_parse. |
++`-------------------------*/
+
+ #ifdef YYPARSE_PARAM
+ #if (defined __STDC__ || defined __C99__FUNC__ \
+@@ -3315,7 +3273,7 @@
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+
+- Refer to the stacks through separate pointers, to allow yyoverflow
++ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+@@ -3369,6 +3327,7 @@
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
++
+ goto yysetstate;
+
+ /*------------------------------------------------------------.
+@@ -3460,7 +3419,7 @@
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+- if (yypact_value_is_default (yyn))
++ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+@@ -3491,8 +3450,8 @@
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+- if (yytable_value_is_error (yyn))
+- goto yyerrlab;
++ if (yyn == 0 || yyn == YYTABLE_NINF)
++ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+@@ -5976,17 +5935,6 @@
+
+ default: break;
+ }
+- /* User semantic actions sometimes alter yychar, and that requires
+- that yytoken be updated with the new translation. We take the
+- approach of translating immediately before every use of yytoken.
+- One alternative is translating here after every semantic action,
+- but that translation would be missed if the semantic action invokes
+- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+- incorrect destructor might then be invoked immediately. In the
+- case of YYERROR or YYBACKUP, subsequent parser actions might lead
+- to an incorrect destructor call or verbose syntax error message
+- before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+@@ -6014,10 +5962,6 @@
+ | yyerrlab -- here on detecting error |
+ `------------------------------------*/
+ yyerrlab:
+- /* Make sure we have latest lookahead translation. See comments at
+- user semantic actions for why this is necessary. */
+- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+-
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+@@ -6025,36 +5969,37 @@
+ #if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+ #else
+-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+- yyssp, yytoken)
+ {
+- char const *yymsgp = YY_("syntax error");
+- int yysyntax_error_status;
+- yysyntax_error_status = YYSYNTAX_ERROR;
+- if (yysyntax_error_status == 0)
+- yymsgp = yymsg;
+- else if (yysyntax_error_status == 1)
+- {
+- if (yymsg != yymsgbuf)
+- YYSTACK_FREE (yymsg);
+- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+- if (!yymsg)
+- {
+- yymsg = yymsgbuf;
+- yymsg_alloc = sizeof yymsgbuf;
+- yysyntax_error_status = 2;
+- }
+- else
+- {
+- yysyntax_error_status = YYSYNTAX_ERROR;
+- yymsgp = yymsg;
+- }
+- }
+- yyerror (yymsgp);
+- if (yysyntax_error_status == 2)
+- goto yyexhaustedlab;
++ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++ {
++ YYSIZE_T yyalloc = 2 * yysize;
++ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++ yyalloc = YYSTACK_ALLOC_MAXIMUM;
++ if (yymsg != yymsgbuf)
++ YYSTACK_FREE (yymsg);
++ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++ if (yymsg)
++ yymsg_alloc = yyalloc;
++ else
++ {
++ yymsg = yymsgbuf;
++ yymsg_alloc = sizeof yymsgbuf;
++ }
++ }
++
++ if (0 < yysize && yysize <= yymsg_alloc)
++ {
++ (void) yysyntax_error (yymsg, yystate, yychar);
++ yyerror (yymsg);
++ }
++ else
++ {
++ yyerror (YY_("syntax error"));
++ if (yysize != 0)
++ goto yyexhaustedlab;
++ }
+ }
+-# undef YYSYNTAX_ERROR
+ #endif
+ }
+
+@@ -6113,7 +6058,7 @@
+ for (;;)
+ {
+ yyn = yypact[yystate];
+- if (!yypact_value_is_default (yyn))
++ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+@@ -6160,7 +6105,7 @@
+ yyresult = 1;
+ goto yyreturn;
+
+-#if !defined yyoverflow || YYERROR_VERBOSE
++#if !defined(yyoverflow) || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here. |
+ `-------------------------------------------------*/
+@@ -6172,13 +6117,8 @@
+
+ yyreturn:
+ if (yychar != YYEMPTY)
+- {
+- /* Make sure we have latest lookahead translation. See comments at
+- user semantic actions for why this is necessary. */
+- yytoken = YYTRANSLATE (yychar);
+- yydestruct ("Cleanup: discarding lookahead",
+- yytoken, &yylval);
+- }
++ yydestruct ("Cleanup: discarding lookahead",
++ yytoken, &yylval);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+diff -ru php-5.5.0beta1/Zend/zend_language_parser.h php5.5-201303201430/Zend/zend_language_parser.h
+--- php-5.5.0beta1/Zend/zend_language_parser.h 2013-03-20 15:26:53.000000000 +0100
++++ php5.5-201303201430/Zend/zend_language_parser.h 2013-03-20 15:37:18.000000000 +0100
+@@ -1,8 +1,10 @@
+-/* A Bison parser, made by GNU Bison 2.6.1. */
+
+-/* Bison interface for Yacc-like parsers in C
++/* A Bison parser, made by GNU Bison 2.4.1. */
++
++/* Skeleton interface for Bison's Yacc-like parsers in C
+
+- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++ Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -30,15 +32,6 @@
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+-#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+-# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H
+-/* Enabling traces. */
+-#ifndef YYDEBUG
+-# define YYDEBUG 0
+-#endif
+-#if YYDEBUG
+-extern int zenddebug;
+-#endif
+
+ /* Tokens. */
+ #ifndef YYTOKENTYPE
+@@ -312,6 +305,7 @@
+
+
+
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+ typedef int YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -320,18 +314,5 @@
+ #endif
+
+
+-#ifdef YYPARSE_PARAM
+-#if defined __STDC__ || defined __cplusplus
+-int zendparse (void *YYPARSE_PARAM);
+-#else
+-int zendparse ();
+-#endif
+-#else /* ! YYPARSE_PARAM */
+-#if defined __STDC__ || defined __cplusplus
+-int zendparse (void);
+-#else
+-int zendparse ();
+-#endif
+-#endif /* ! YYPARSE_PARAM */
+
+-#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */
++
diff --git a/php.spec b/php.spec
index 6c45861..8da93b7 100644
--- a/php.spec
+++ b/php.spec
@@ -1,18 +1,15 @@
# API/ABI check
-%global apiver 20100412
-%global zendver 20100525
+%global apiver 20121113
+%global zendver 20121212
%global pdover 20080721
# Extension version
-%global fileinfover 1.0.5
-%global pharver 2.0.1
-%global zipver 1.11.0
-%global jsonver 1.2.1
+%global opcachever 7.0.1-dev
# Adds -z now to the linker flags
%global _hardened_build 1
# version used for php embedded library soname
-%global embed_version 5.4
+%global embed_version 5.5
%global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock)
@@ -23,16 +20,16 @@
# arch detection heuristic used by bindir/mysql_config.
%global mysql_config %{_libdir}/mysql/mysql_config
-%global with_fpm 1
+%global with_fpm 1
# Build mysql/mysqli/pdo extensions using libmysqlclient or only mysqlnd
%global with_libmysql 0
# Build ZTS extension or only NTS
-%global with_zts 1
+%global with_zts 1
-%if 0%{?__isa:1}
-%global isasuffix -%{__isa}
+%if 0%{?__isa_bits:1}
+%global isasuffix -%{__isa_bits}
%else
%global isasuffix %nil
%endif
@@ -46,6 +43,8 @@
%{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}}
%{!?_httpd_contentdir: %{expand: %%global _httpd_contentdir /var/www}}
+%global with_dtrace 1
+
%if 0%{?fedora} < 17 && 0%{?rhel} < 7
%global with_zip 0
%global with_libzip 0
@@ -62,12 +61,12 @@
%global db_devel libdb-devel
%endif
-#global rcver RC1
+%global rcver beta1
Summary: PHP scripting language for creating dynamic web sites
Name: php
-Version: 5.4.13
-Release: 1%{?dist}
+Version: 5.5.0
+Release: 0.1.%{rcver}%{?dist}
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
# TSRM is licensed under BSD
@@ -75,7 +74,7 @@ License: PHP and Zend and BSD
Group: Development/Languages
URL: http://www.php.net/
-Source0: http://www.php.net/distributions/php-%{version}%{?rcver}.tar.bz2
+Source0: http://www.php.net/distributions/php-%{version}%{?rcver}.tar.xz
Source1: php.conf
Source2: php.ini
Source3: macros.php
@@ -86,12 +85,16 @@ Source7: php-fpm.logrotate
Source8: php-fpm.sysconfig
Source9: php.modconf
Source10: php.ztsmodconf
+# Configuration files for some extensions
+Source50: opcache.ini
# Build fixes
Patch5: php-5.2.0-includedir.patch
Patch6: php-5.2.4-embed.patch
Patch7: php-5.3.0-recode.patch
Patch8: php-5.4.7-libdb.patch
+# revert to bison 2.4 generated parser
+Patch9: php-5.5.0-build.patch
# Fixes for extension modules
# https://bugs.php.net/63171 no odbc call during timeout
@@ -99,7 +102,6 @@ Patch21: php-5.4.7-odbctimer.patch
# Functional changes
Patch40: php-5.4.0-dlopen.patch
-Patch41: php-5.4.0-easter.patch
Patch42: php-5.3.1-systzdata-v10.patch
# See http://bugs.php.net/53436
Patch43: php-5.4.0-phpize.patch
@@ -116,7 +118,7 @@ Patch47: php-5.4.9-phpinfo.patch
# Fixes for tests
-BuildRequires: bzip2-devel, curl-devel >= 7.9, gmp-devel
+BuildRequires: bzip2-devel, curl-devel >= 7.9
BuildRequires: httpd-devel >= 2.0.46-1, pam-devel
BuildRequires: libstdc++-devel, openssl-devel
BuildRequires: sqlite-devel >= 3.6.0
@@ -127,6 +129,9 @@ BuildRequires: libtool-ltdl-devel
%if %{with_libzip}
BuildRequires: libzip-devel >= 0.10
%endif
+%if %{with_dtrace}
+BuildRequires: systemtap-sdt-devel
+%endif
Obsoletes: php-dbg, php3, phpfi, stronghold-php
%if %{with_zts}
@@ -184,9 +189,9 @@ Summary: PHP FastCGI Process Manager
# TSRM and fpm are licensed under BSD
License: PHP and Zend and BSD
Requires: php-common%{?_isa} = %{version}-%{release}
+Requires(pre): /usr/sbin/useradd
BuildRequires: systemd-units
Requires: systemd-units
-Requires(pre): /usr/sbin/useradd
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
@@ -209,8 +214,8 @@ Summary: Common files for PHP
# regex, libmagic are licensed under BSD
License: PHP and BSD
# ABI/API check - Arch specific
-Provides: php-api = %{apiver}%{isasuffix}, php-zend-abi = %{zendver}%{isasuffix}
-Provides: php(api) = %{apiver}%{isasuffix}, php(zend-abi) = %{zendver}%{isasuffix}
+Provides: php(api) = %{apiver}%{isasuffix}
+Provides: php(zend-abi) = %{zendver}%{isasuffix}
Provides: php(language) = %{version}, php(language)%{?_isa} = %{version}
# Provides for all builtin/shared modules:
Provides: php-bz2, php-bz2%{?_isa}
@@ -222,36 +227,25 @@ Provides: php-date, php-date%{?_isa}
Provides: php-ereg, php-ereg%{?_isa}
Provides: php-exif, php-exif%{?_isa}
Provides: php-fileinfo, php-fileinfo%{?_isa}
-Provides: php-pecl-Fileinfo = %{fileinfover}, php-pecl-Fileinfo%{?_isa} = %{fileinfover}
-Provides: php-pecl(Fileinfo) = %{fileinfover}, php-pecl(Fileinfo)%{?_isa} = %{fileinfover}
Provides: php-filter, php-filter%{?_isa}
Provides: php-ftp, php-ftp%{?_isa}
Provides: php-gettext, php-gettext%{?_isa}
-Provides: php-gmp, php-gmp%{?_isa}
Provides: php-hash, php-hash%{?_isa}
Provides: php-mhash = %{version}, php-mhash%{?_isa} = %{version}
Provides: php-iconv, php-iconv%{?_isa}
Provides: php-json, php-json%{?_isa}
-Provides: php-pecl-json = %{jsonver}, php-pecl-json%{?_isa} = %{jsonver}
-Provides: php-pecl(json) = %{jsonver}, php-pecl(json)%{?_isa} = %{jsonver}
Provides: php-libxml, php-libxml%{?_isa}
Provides: php-openssl, php-openssl%{?_isa}
-Provides: php-pecl-phar = %{pharver}, php-pecl-phar%{?_isa} = %{pharver}
-Provides: php-pecl(phar) = %{pharver}, php-pecl(phar)%{?_isa} = %{pharver}
Provides: php-phar, php-phar%{?_isa}
Provides: php-pcre, php-pcre%{?_isa}
Provides: php-reflection, php-reflection%{?_isa}
Provides: php-session, php-session%{?_isa}
-Provides: php-shmop, php-shmop%{?_isa}
-Provides: php-simplexml, php-simplexml%{?_isa}
Provides: php-sockets, php-sockets%{?_isa}
Provides: php-spl, php-spl%{?_isa}
Provides: php-standard = %{version}, php-standard%{?_isa} = %{version}
Provides: php-tokenizer, php-tokenizer%{?_isa}
%if %{with_zip}
Provides: php-zip, php-zip%{?_isa}
-Provides: php-pecl-zip = %{zipver}, php-pecl-zip%{?_isa} = %{zipver}
-Provides: php-pecl(zip) = %{zipver}, php-pecl(zip)%{?_isa} = %{zipver}
Obsoletes: php-pecl-zip
%endif
Provides: php-zlib, php-zlib%{?_isa}
@@ -278,6 +272,28 @@ The php-devel package contains the files needed for building PHP
extensions. If you need to compile your own PHP extensions, you will
need to install this package.
+%package opcache
+Summary: The Zend Optimizer+
+Group: Development/Languages
+License: PHP
+Requires: php-common%{?_isa} = %{version}-%{release}
+Obsoletes: php-pecl-zendoptimizerplus
+Provides: php-pecl-zendoptimizerplus = %{opcachever}
+Provides: php-pecl-zendoptimizerplus%{?_isa} = %{opcachever}
+Provides: php-pecl(opcache) = %{opcachever}
+Provides: php-pecl(opcache)%{?_isa} = %{opcachever}
+# Only one opcode cache could be enabled
+Conflicts: php-xcache
+# APC 3.1.15 offer an option to disable opcache
+Conflicts: php-pecl-apc < 3.1.15
+
+%description opcache
+The Zend Optimizer+ provides faster PHP execution through opcode caching and
+optimization. It improves PHP performance by storing precompiled script
+bytecode in the shared memory. This eliminates the stages of reading code from
+the disk and compiling it on future access. In addition, it applies a few
+bytecode optimization patterns that make code execution faster.
+
%package imap
Summary: A module for PHP applications that use IMAP
Group: Development/Languages
@@ -406,6 +422,7 @@ Group: Development/Languages
License: PHP
Requires: php-common%{?_isa} = %{version}-%{release}
Provides: php-posix, php-posix%{?_isa}
+Provides: php-shmop, php-shmop%{?_isa}
Provides: php-sysvsem, php-sysvsem%{?_isa}
Provides: php-sysvshm, php-sysvshm%{?_isa}
Provides: php-sysvmsg, php-sysvmsg%{?_isa}
@@ -494,11 +511,12 @@ License: PHP
Requires: php-common%{?_isa} = %{version}-%{release}
Obsoletes: php-domxml, php-dom
Provides: php-dom, php-dom%{?_isa}
-Provides: php-xsl, php-xsl%{?_isa}
Provides: php-domxml, php-domxml%{?_isa}
+Provides: php-simplexml, php-simplexml%{?_isa}
Provides: php-wddx, php-wddx%{?_isa}
Provides: php-xmlreader, php-xmlreader%{?_isa}
Provides: php-xmlwriter, php-xmlwriter%{?_isa}
+Provides: php-xsl, php-xsl%{?_isa}
BuildRequires: libxslt-devel >= 1.0.18-1, libxml2-devel >= 2.4.14-1
%description xml
@@ -559,6 +577,18 @@ Requires: php-common%{?_isa} = %{version}-%{release}
The php-bcmath package contains a dynamic shared object that will add
support for using the bcmath library to PHP.
+%package gmp
+Summary: A module for PHP applications for using the GNU MP library
+Group: Development/Languages
+# All files licensed under PHP version 3.01
+License: PHP
+BuildRequires: gmp-devel
+Requires: php-common%{?_isa} = %{version}-%{release}
+
+%description gmp
+These functions allow you to work with arbitrary-length integers
+using the GNU MP library.
+
%package dba
Summary: A database abstraction layer module for PHP applications
Group: Development/Languages
@@ -652,7 +682,7 @@ Group: System Environment/Libraries
# All files licensed under PHP version 3.01
License: PHP
Requires: php-common%{?_isa} = %{version}-%{release}
-BuildRequires: libicu-devel >= 3.6
+BuildRequires: libicu-devel >= 4.0
%description intl
The php-intl package contains a dynamic shared object that will add
@@ -678,11 +708,11 @@ support for using the enchant library to PHP.
%patch6 -p1 -b .embed
%patch7 -p1 -b .recode
%patch8 -p1 -b .libdb
+%patch9 -p1 -b .build
%patch21 -p1 -b .odbctimer
%patch40 -p1 -b .dlopen
-%patch41 -p1 -b .easter
%patch42 -p1 -b .systzdata
%patch43 -p1 -b .headers
%if %{with_libzip}
@@ -718,8 +748,6 @@ mkdir build-cgi build-apache build-embedded \
%endif
# ----- Manage known as failed test -------
-# php_egg_logo_guid() removed by patch41
-rm -f tests/basic/php_egg_logo_guid.phpt
# affected by systzdata patch
rm -f ext/date/tests/timezone_location_get.phpt
# fails sometime
@@ -756,28 +784,10 @@ if test "x${vpdo}" != "x%{pdover}"; then
fi
# Check for some extension version
-ver=$(sed -n '/#define PHP_FILEINFO_VERSION /{s/.* "//;s/".*$//;p}' ext/fileinfo/php_fileinfo.h)
-if test "$ver" != "%{fileinfover}"; then
- : Error: Upstream FILEINFO version is now ${ver}, expecting %{fileinfover}.
- : Update the fileinfover macro and rebuild.
- exit 1
-fi
-ver=$(sed -n '/#define PHP_PHAR_VERSION /{s/.* "//;s/".*$//;p}' ext/phar/php_phar.h)
-if test "$ver" != "%{pharver}"; then
- : Error: Upstream PHAR version is now ${ver}, expecting %{pharver}.
- : Update the pharver macro and rebuild.
- exit 1
-fi
-ver=$(sed -n '/#define PHP_ZIP_VERSION_STRING /{s/.* "//;s/".*$//;p}' ext/zip/php_zip.h)
-if test "$ver" != "%{zipver}"; then
- : Error: Upstream ZIP version is now ${ver}, expecting %{zipver}.
- : Update the zipver macro and rebuild.
- exit 1
-fi
-ver=$(sed -n '/#define PHP_JSON_VERSION /{s/.* "//;s/".*$//;p}' ext/json/php_json.h)
-if test "$ver" != "%{jsonver}"; then
- : Error: Upstream JSON version is now ${ver}, expecting %{jsonver}.
- : Update the jsonver macro and rebuild.
+ver=$(sed -n '/#define ACCELERATOR_VERSION /{s/.* "//;s/".*$//;p}' ext/opcache/ZendAccelerator.h)
+if test "$ver" != "%{opcachever}"; then
+ : Error: Upstream PHAR version is now ${ver}, expecting %{opcachever}.
+ : Update the opcachever macro and rebuild.
exit 1
fi
@@ -799,6 +809,9 @@ chmod 644 README.*
# php-fpm configuration files for tmpfiles.d
echo "d /run/php-fpm 755 root root" >php-fpm.tmpfiles
+# Some extensions have their own configuration file
+cp %{SOURCE50} .
+
%build
# aclocal workaround - to be improved
@@ -828,17 +841,27 @@ build() {
# Old/recent bison version seems to produce a broken parser;
# upstream uses GNU Bison 2.3. Workaround:
mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend
+
+# Always static:
+# date, filter, libxml, reflection, spl: not supported
+# ereg: build options vary per SAPI
+# hash: for PHAR_SIG_SHA256 and PHAR_SIG_SHA512
+# session: dep on hash, used by soap and wddx
+# pcre: used by filter, zip
+# pcntl, readline: only used by CLI sapi
+# openssl: for PHAR_SIG_OPENSSL
+# zlib: used by image
+
ln -sf ../configure
%configure \
--cache-file=../config.cache \
- --with-libdir=%{_lib} \
+ --with-libdir=%{_lib} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--without-pear \
- --with-bz2 \
--with-exec-dir=%{_bindir} \
--with-freetype-dir=%{_prefix} \
--with-png-dir=%{_prefix} \
@@ -846,27 +869,21 @@ ln -sf ../configure
--enable-gd-native-ttf \
--with-t1lib=%{_prefix} \
--without-gdbm \
- --with-gettext \
- --with-gmp \
- --with-iconv \
--with-jpeg-dir=%{_prefix} \
--with-openssl \
- --with-pcre-regex=%{_prefix} \
+ --with-pcre-regex=%{_prefix} \
--with-zlib \
--with-layout=GNU \
- --enable-exif \
- --enable-ftp \
--enable-magic-quotes \
- --enable-sockets \
--with-kerberos \
--enable-ucd-snmp-hack \
- --enable-shmop \
- --enable-calendar \
- --with-libxml-dir=%{_prefix} \
- --enable-xml \
- --with-system-tzdata \
+ --with-libxml-dir=%{_prefix} \
+ --with-system-tzdata \
--with-mhash \
- $*
+%if %{with_dtrace}
+ --enable-dtrace \
+%endif
+ $*
if test $? != 0; then
tail -500 config.log
: configure failed
@@ -882,13 +899,24 @@ pushd build-cgi
build --enable-force-cgi-redirect \
--libdir=%{_libdir}/php \
--enable-pcntl \
+ --enable-opcache \
--with-imap=shared --with-imap-ssl \
--enable-mbstring=shared \
--enable-mbregex \
--with-gd=shared \
+ --with-gmp=shared \
+ --enable-calendar=shared \
--enable-bcmath=shared \
+ --with-bz2=shared \
+ --enable-ctype=shared \
--enable-dba=shared --with-db4=%{_prefix} \
--with-tcadb=%{_prefix} \
+ --enable-exif=shared \
+ --enable-ftp=shared \
+ --with-gettext=shared \
+ --with-iconv=shared \
+ --enable-sockets=shared \
+ --enable-tokenizer=shared \
--with-xmlrpc=shared \
--with-ldap=shared --with-ldap-sasl \
--enable-mysqlnd=shared \
@@ -899,6 +927,8 @@ build --enable-force-cgi-redirect \
--with-pdo-firebird=shared,%{_libdir}/firebird \
--enable-dom=shared \
--with-pgsql=shared \
+ --enable-simplexml=shared \
+ --enable-xml=shared \
--enable-wddx=shared \
--with-snmp=shared,%{_prefix} \
--enable-soap=shared \
@@ -928,6 +958,7 @@ build --enable-force-cgi-redirect \
--with-tidy=shared,%{_prefix} \
--with-mssql=shared,%{_prefix} \
--enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \
+ --enable-shmop=shared \
--enable-posix=shared \
--with-unixODBC=shared,%{_prefix} \
--enable-fileinfo=shared \
@@ -939,10 +970,14 @@ popd
without_shared="--without-gd \
--disable-dom --disable-dba --without-unixODBC \
+ --disable-opcache \
--disable-xmlreader --disable-xmlwriter \
--without-sqlite3 --disable-phar --disable-fileinfo \
--disable-json --without-pspell --disable-wddx \
- --without-curl --disable-posix \
+ --without-curl --disable-posix --disable-xml \
+ --disable-simplexml --disable-exif --without-gettext \
+ --without-iconv --disable-ftp --without-bz2 --disable-ctype \
+ --disable-shmop --disable-sockets --disable-tokenizer \
--disable-sysvmsg --disable-sysvshm --disable-sysvsem"
# Build Apache module, and the CLI SAPI, /usr/bin/php
@@ -992,13 +1027,24 @@ build --enable-force-cgi-redirect \
--enable-maintainer-zts \
--with-config-file-scan-dir=%{_sysconfdir}/php-zts.d \
--enable-pcntl \
+ --enable-opcache \
--with-imap=shared --with-imap-ssl \
--enable-mbstring=shared \
--enable-mbregex \
--with-gd=shared \
+ --with-gmp=shared \
+ --enable-calendar=shared \
--enable-bcmath=shared \
+ --with-bz2=shared \
+ --enable-ctype=shared \
--enable-dba=shared --with-db4=%{_prefix} \
--with-tcadb=%{_prefix} \
+ --with-gettext=shared \
+ --with-iconv=shared \
+ --enable-sockets=shared \
+ --enable-tokenizer=shared \
+ --enable-exif=shared \
+ --enable-ftp=shared \
--with-xmlrpc=shared \
--with-ldap=shared --with-ldap-sasl \
--enable-mysqlnd=shared \
@@ -1010,6 +1056,8 @@ build --enable-force-cgi-redirect \
--with-pdo-firebird=shared,%{_libdir}/firebird \
--enable-dom=shared \
--with-pgsql=shared \
+ --enable-simplexml=shared \
+ --enable-xml=shared \
--enable-wddx=shared \
--with-snmp=shared,%{_prefix} \
--enable-soap=shared \
@@ -1039,6 +1087,7 @@ build --enable-force-cgi-redirect \
--with-tidy=shared,%{_prefix} \
--with-mssql=shared,%{_prefix} \
--enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \
+ --enable-shmop=shared \
--enable-posix=shared \
--with-unixODBC=shared,%{_prefix} \
--enable-fileinfo=shared \
@@ -1075,6 +1124,10 @@ popd
%check
%if %runselftest
+
+# Double stack size (required by bug54268.phpt)
+ulimit -s 16384
+
cd build-apache
# Run tests, using the CLI SAPI
export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2
@@ -1082,10 +1135,13 @@ export SKIP_ONLINE_TESTS=1
unset TZ LANG LC_ALL
if ! make test; then
set +x
- for f in `find .. -name \*.diff -type f -print`; do
- echo "TEST FAILURE: $f --"
- cat "$f"
- echo "-- $f result ends."
+ for f in $(find .. -name \*.diff -type f -print); do
+ if ! grep -q XFAIL "${f/.diff/.phpt}"
+ then
+ echo "TEST FAILURE: $f --"
+ cat "$f"
+ echo -e "\n-- $f result ends."
+ fi
done
set -x
#exit 1
@@ -1220,37 +1276,53 @@ install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/php-fpm
for mod in pgsql odbc ldap snmp xmlrpc imap \
mysqlnd mysqlnd_mysql mysqlnd_mysqli pdo_mysqlnd \
mbstring gd dom xsl soap bcmath dba xmlreader xmlwriter \
+ simplexml bz2 calendar ctype exif ftp gettext gmp iconv \
+ sockets tokenizer opcache \
pdo pdo_pgsql pdo_odbc pdo_sqlite json %{zipmod} \
sqlite3 interbase pdo_firebird \
enchant phar fileinfo intl \
mcrypt tidy pdo_dblib mssql pspell curl wddx \
- posix sysvshm sysvsem sysvmsg recode \
+ posix shmop sysvshm sysvsem sysvmsg recode xml \
%if %{with_libmysql}
mysql mysqli pdo_mysql \
%endif
; do
- cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${mod}.ini <<EOF
+ # for extension load order
+ if [ "$mod" = "wddx" ]
+ then ini=xml_${mod}.ini
+ else ini=${mod}.ini
+ fi
+ # some extensions have their own config file
+ if [ -f ${ini} ]; then
+ sed -e 's:@EXTPATH@:%{_libdir}/php/modules:' \
+ ${ini} >$RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini}
+ sed -e 's:@EXTPATH@:%{_libdir}/php-zts/modules:' \
+ ${ini} >$RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini}
+ else
+ cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} <<EOF
; Enable ${mod} extension module
extension=${mod}.so
EOF
%if %{with_zts}
- cat > $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${mod}.ini <<EOF
+ cat > $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini} <<EOF
; Enable ${mod} extension module
extension=${mod}.so
EOF
%endif
+ fi
cat > files.${mod} <<EOF
%attr(755,root,root) %{_libdir}/php/modules/${mod}.so
-%config(noreplace) %attr(644,root,root) %{_sysconfdir}/php.d/${mod}.ini
+%config(noreplace) %attr(644,root,root) %{_sysconfdir}/php.d/${ini}
%if %{with_zts}
%attr(755,root,root) %{_libdir}/php-zts/modules/${mod}.so
-%config(noreplace) %attr(644,root,root) %{_sysconfdir}/php-zts.d/${mod}.ini
+%config(noreplace) %attr(644,root,root) %{_sysconfdir}/php-zts.d/${ini}
%endif
EOF
done
# The dom, xsl and xml* modules are all packaged in php-xml
-cat files.dom files.xsl files.xml{reader,writer} files.wddx > files.xml
+cat files.dom files.xsl files.xml{reader,writer} files.wddx \
+ files.simplexml >> files.xml
# The mysql and mysqli modules are both packaged in php-mysql
%if %{with_libmysql}
@@ -1271,7 +1343,7 @@ cat files.pdo_odbc >> files.odbc
cat files.pdo_firebird >> files.interbase
# sysv* and posix in packaged in php-process
-cat files.sysv* files.posix > files.process
+cat files.shmop files.sysv* files.posix > files.process
# Package sqlite3 and pdo_sqlite with pdo; isolating the sqlite dependency
# isn't useful at this time since rpm itself requires sqlite.
@@ -1279,7 +1351,10 @@ cat files.pdo_sqlite >> files.pdo
cat files.sqlite3 >> files.pdo
# Package json, zip, curl, phar and fileinfo in -common.
-cat files.json files.curl files.phar files.fileinfo > files.common
+cat files.json files.curl files.phar files.fileinfo \
+ files.exif files.gettext files.iconv files.calendar \
+ files.ftp files.bz2 files.ctype files.sockets \
+ files.tokenizer > files.common
%if %{with_zip}
cat files.zip >> files.common
%endif
@@ -1468,6 +1543,7 @@ fi
%files soap -f files.soap
%files bcmath -f files.bcmath
%doc libbcmath_COPYING
+%files gmp -f files.gmp
%files dba -f files.dba
%files pdo -f files.pdo
%files mcrypt -f files.mcrypt
@@ -1480,9 +1556,23 @@ fi
%files interbase -f files.interbase
%files enchant -f files.enchant
%files mysqlnd -f files.mysqlnd
+%files opcache -f files.opcache
%changelog
+* Fri Mar 22 2013 Remi Collet <rcollet at redhat.com> 5.5.0-0.1.beta1
+- update to 5.5.0beta1
+ http://fedoraproject.org/wiki/Features/Php55
+- new Zend OPcache extension in php-opccache new sub-package
+- don't display XFAIL tests in report
+- use xz compressed tarball
+- build simplexml and xml extensions shared (moved in php-xml)
+- build bz2, calendar, ctype, exif, ftp, gettext, iconv
+ sockets and tokenizer extensions shared (in php-common)
+- build gmp extension shared (in php-gmp new sub-package)
+- build shmop extension shared (moved in php-process)
+- drop some old compatibility provides (php-api, php-zend-abi, php-pecl-*)
+
* Thu Mar 14 2013 Remi Collet <rcollet at redhat.com> 5.4.13-1
- update to 5.4.13
- security fix for CVE-2013-1643
diff --git a/sources b/sources
index df4340a..cd5682e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-cacd308e978b7cf9ba4993196612ccf7 php-5.4.13.tar.bz2
+19b4558c63660ecb9c2fc71c4eb0e0f5 php-5.5.0beta1.tar.xz
More information about the scm-commits
mailing list