Re: PHP 5.5.0beta1 ZTS broken build
| From: | Laruence | Date: | Mon, 25 Mar 2013 04:30:36 +0000 |
| Subject: | Re: PHP 5.5.0beta1 ZTS broken build | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-66786@lists.php.net to get a copy of this message | ||
On Mon, Mar 25, 2013 at 7:38 AM, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> On 03/24/2013 10:35 AM, Felipe Pena wrote:
>> Hi,
>>
>> 2013/3/24 Rasmus Lerdorf <rasmus@lerdorf.com>:
>>> On 03/22/2013 02:02 AM, Remi Collet wrote:
>>>> While build of 5.5 snapshot works perfectly, beta1 ZTS build is broken
>>>>
>>>> In file included from
>>>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:33:0:
>>>> /dev/shm/BUILD/php-5.5.0beta1/build-ztscli/Zend/zend_language_parser.h:331:5:
>>>> error: conflicting types for 'zendparse'
>>>> In file included from
>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals.h:28:0,
>>>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_compile.h:418,
>>>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_modules.h:26,
>>>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_API.h:26,
>>>> from /dev/shm/BUILD/php-5.5.0beta1/main/php.h:38,
>>>> from
>>>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:25:
>>>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals_macros.h:35:5: note:
>>>> previous declaration of 'zendparse' was here
>>>>
>>>> Comparing the 201303201430 snapshot (very closed to beta1) and beta1 archive
>>>>
>>>> 201303201430, in bison generated files:
>>>> /* A Bison parser, made by GNU Bison 2.4.1. */
>>>> beta1:
>>>> /* A Bison parser, made by GNU Bison 2.6.1. */
>>>>
>>>> So, it seems snapshot script don't use the same environment than the one
>>>> used to generate release.
>>>>
>>>> Any idea how to fix this ?
>>>
>>> I took a quick look at this. The Bison change causing this from their
>>> NEWS file is:
>>>
>>> *** Features deprecated since Bison 1.875
>>> YYPARSE_PARAM and YYLEX_PARAM, deprecated in favor of
>>> %parse-param and %lex-param, will no longer be supported.
>>>
>>> I was hoping the fix would be as simple as doing:
>>>
>>> -#define YYPARSE_PARAM tsrm_ls
>>> -#define YYLEX_PARAM tsrm_ls
>>> +%parse-param { tsrm_ls }
>>> +%lex-param { tsrm_ls }
>>>
>>> but that doesn't quite do the trick. Need to read up more on how
>>> %parse-param and %lex-param work. If someone wants to do a little light
>>> reading and report back it would be appreciated.
>>>
>>
>>
>> http://www.gnu.org/software/bison/manual/html_node/Parser-Function.html#Parser-Function
>>
>> This page explain how to use it.
>
> Sure, I see how they work, but the problem is that they can't be inside
> the %{ ... %} code block there. They have to be outside and as such
> won't have access to the #ifdef ZTS. So I don't think we can
> conditionally create a reentrant parser like we did before without
> refactoring things a bit.
if %parse-param defined, then the paramenter also is added to yyerror,
yydestroctor etc.
it will a little big change.
thanks
>
> -Rasmus
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
--
Laruence Xinchen Hui
http://www.laruence.com/