Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:66792 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 70885 invoked from network); 25 Mar 2013 05:27:49 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Mar 2013 05:27:49 -0000 Authentication-Results: pb1.pair.com smtp.mail=rasmus@lerdorf.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=rasmus@lerdorf.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lerdorf.com from 209.85.192.181 cause and error) X-PHP-List-Original-Sender: rasmus@lerdorf.com X-Host-Fingerprint: 209.85.192.181 mail-pd0-f181.google.com Received: from [209.85.192.181] ([209.85.192.181:35715] helo=mail-pd0-f181.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 5D/22-58569-450EF415 for ; Mon, 25 Mar 2013 00:27:49 -0500 Received: by mail-pd0-f181.google.com with SMTP id q10so2354366pdj.12 for ; Sun, 24 Mar 2013 22:27:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:message-id:date:from:user-agent:mime-version:to:cc :subject:references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding:x-gm-message-state; bh=TSkQ5URQ5heLZlMXoDNK7RHe7bVsrWExFC4QkWG5hrg=; b=nIIa9BM/CDCPMsngq5C/NCw7mfiO9GGmf/RaBPaaexO8p2JbybP7Nvhn5kdsvJB/L0 z1ez0fDDq6bH+cLjo6ma/fIccKX9LCcIqecnjE0lwMTFehWiS176Erzwr8urtEpG2Aaq 4i1TWQFOvhV3ArceCshjgUjcVmA0Jypw2+OsoV0n/Cso6L9cVtrVHFvLt20COKM4XIGF jVWCS5rxRhletNx+Bnv2YjcA4WjIdjjOejcj7RkwbrwVPsf3t82QSpCrWJaZ1MTyCXiT z2coW2zQ2Z4H8qJQ9HyWE1zZuSK7TaLfq+8/pI/9DunPfYVgIGPUeToJv6gtFZfzkevt Jtuw== X-Received: by 10.68.25.231 with SMTP id f7mr15942634pbg.35.1364189265793; Sun, 24 Mar 2013 22:27:45 -0700 (PDT) Received: from [192.168.200.148] (c-50-131-44-225.hsd1.ca.comcast.net. [50.131.44.225]) by mx.google.com with ESMTPS id bs1sm1221315pbc.8.2013.03.24.22.27.44 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 24 Mar 2013 22:27:44 -0700 (PDT) Message-ID: <514FE04F.5000402@lerdorf.com> Date: Sun, 24 Mar 2013 22:27:43 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 To: Laruence CC: Felipe Pena , Remi Collet , internals References: <514C1E14.3070002@fedoraproject.org> <514F370B.7080409@lerdorf.com> <514F8E86.2020601@lerdorf.com> <514FD5AE.9060703@lerdorf.com> In-Reply-To: X-Enigmail-Version: 1.4.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Gm-Message-State: ALoCoQnz3TEUTDcs5ewZgVRQxlLI8Zg+a3lc/Y7gVdgjPkfEqftfuTjwkQapTz/xcs+ia2Cdgkk1 Subject: Re: [PHP-DEV] PHP 5.5.0beta1 ZTS broken build From: rasmus@lerdorf.com (Rasmus Lerdorf) On 03/24/2013 10:24 PM, Laruence wrote: > On Mon, Mar 25, 2013 at 1:19 PM, Laruence wrote: >> On Mon, Mar 25, 2013 at 1:18 PM, Laruence wrote: >>> On Mon, Mar 25, 2013 at 12:42 PM, Rasmus Lerdorf wrote: >>>> On 03/24/2013 09:30 PM, Laruence wrote: >>>>> On Mon, Mar 25, 2013 at 7:38 AM, Rasmus Lerdorf wrote: >>>>>> On 03/24/2013 10:35 AM, Felipe Pena wrote: >>>>>>> Hi, >>>>>>> >>>>>>> 2013/3/24 Rasmus Lerdorf : >>>>>>>> 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. >>>> >>>> Right, but if we handle it like we do with TSRMLS_C throughout the code >>>> and always set that %parse-param to this new magic macro we make up and >>>> have it point to void *compiler_globals for zendparse() under ZTS mode >>>> and void otherwise and make sure it is (re)defined correctly in other >>>> places? It might mean we need to refactor zenderror() to take a dummy >>>> first arg since it seems to prepend the parse-param type there. Messy. >>> >>> Hmm, seems fine, a patch is attached: >>> https://bugs.php.net/patch-display.php?bug_id=64503&patch=bison_build.patch&revision=latest >>> >>> >>> but there must be some unused parameter term_ls while in non-zts build... >> unused parameter warning I mean, :) > hmm, how stupid I was, hehe , simply: > > #ifndef ZTS > (void)tsrm_ls; > #endif Commit it to master so we can play with it. I think this is the right approach and we can pull it into 5.5b2. It would be really nice to have bison 2.6/2.7 support in 5.5. -Rasmus