bugGNU Octave - Bugs: bug #43023, Compilation error...

 
 

bug #43023: Compilation error "‘yylex’ was not declared in this scope"

Submitted by:  Guillaume <gyom>
Submitted on:  Tue 19 Aug 2014 01:57:54 PM UTC  
 
Category:  Configuration and Build System Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Build Failure
Status:  Fixed Assigned to:  None
Originator Name:  Guillaume Open/Closed:  Closed
Release:  dev Operating System:  GNU/Linux

Add a New Comment (Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

( Jump to the original submission)

Mon 03 Nov 2014 02:26:41 AM UTC, comment #18: 

I believe this has been fixed on both default and stable.

http://hg.savannah.gnu.org/hgweb/octave/rev/6b4dfb1e5afb
http://hg.savannah.gnu.org/hgweb/octave/rev/429ed2f2e8c6

Closing report.

Mike Miller <mtmiller>
Project Administrator
Wed 10 Sep 2014 06:14:09 PM UTC, comment #17: 

Sorry, I forgot that I made the original change on stable.  I'll put this fix there too.

I agree that we should still support some older versions of the tools.  I'm not worried about Bison 2.3.x though.  2.4.x was first released in 2008.

John W. Eaton <jwe>
Project Administrator
Wed 10 Sep 2014 05:35:08 PM UTC, comment #16: 

And it now works for me with bison 2.4.1, many thanks!

Guillaume <gyom>
Wed 10 Sep 2014 04:59:29 PM UTC, comment #15: 

This fix works for me with bison 2.4.3, thanks! (Some other unrelated build errors, but I'll take care of those separately.)

With bison 2.3 it correctly reports that it is unable to declare a push-pull parser and refuses to use it.

The only problem I have with this fix is that it's on default, but it's fixing a regression that showed up on stable (and is in the 3.8.2 release).

And I have no problem with obsoleting old bison versions, if you'd rather have configure only test for the most modern syntax and report that all others are not usable. But we will need to keep some feature test for the minimum set of new features that we require. In general it would be nice to at least support whatever versions of tools most regular developers building from hg are using (for example if some people are still on Ubuntu 12.04 or Debian 7, both with bison 2.5).

Mike Miller <mtmiller>
Project Administrator
Wed 10 Sep 2014 03:27:05 PM UTC, comment #14: 

OK, it was a little more complicated, but I think I have it working now.  I checked in the following changeset:

  http://hg.savannah.gnu.org/hgweb/octave/rev/429ed2f2e8c6

I even tested it (!! I know, right?) with an older version of bison and it seems to work for me.  Let me know if you have additional problems.

Maybe someday the bison interface will stop changing and we can drop all this cruft and just require a sufficiently recent version.  Or is that asking too much?

John W. Eaton <jwe>
Project Administrator
Tue 09 Sep 2014 08:44:23 PM UTC, comment #13: 

Hmm, it didn't work correctly.  But something like this should work!

John W. Eaton <jwe>
Project Administrator
Tue 09 Sep 2014 08:42:52 PM UTC, comment #12: 

I think the attached patch will fix the problem.  I'm testing it now, but if you can test it and verify that it does work, then please go ahead and apply it.

(file #32051)

John W. Eaton <jwe>
Project Administrator
Tue 09 Sep 2014 07:34:07 PM UTC, comment #11: 

And the problem with the detection in OCTAVE_PROG_BISON is that old bison does not error on '%define api.prefix "foo_"', it just emits a warning that you've defined an unused variable. So the current detection misunderstands all bisons as supporting the new syntax.

Mike Miller <mtmiller>
Project Administrator
Tue 09 Sep 2014 07:18:24 PM UTC, comment #10: 

Looks to me like the problem is incorrect detection of when to use "%define api.prefix" vs. "%name-prefix=". Specifically, when I try to build with bison 2.4.3, configure sets the variable BISON_API_PREFIX_DECL_STYLE to "api" and compilation fails. If I instead build with "make BISON_API_PREFIX_DECL_STYLE=name", compilation succeeds.

Mike Miller <mtmiller>
Project Administrator
Tue 09 Sep 2014 05:22:48 PM UTC, comment #9: 

Thanks, John. I was just documenting here your advice on how to build Octave after changing the version of Bison.
I'll try to have a closer look but I'm afraid I don't have your expertise.

Guillaume <gyom>
Tue 09 Sep 2014 05:07:50 PM UTC, comment #8: 

Same here, I have seen this error with bison 2.4 as I said in comment #4 and have also meant to dig into this to see what changed and what it should be, but not gotten around to it yet :)

Mike Miller <mtmiller>
Project Administrator
Tue 09 Sep 2014 04:41:45 PM UTC, comment #7: 

As I said previously, I recently made some changes to allow Octave to be built with Bison 3.0.x. I didn't intend to break things for earlier versions. I'll try to take a look at making it work again, but unfortunately I haven't had time to do that.  If you can spot the flaw in my previous change it would be helpful.

John W. Eaton <jwe>
Project Administrator
Tue 09 Sep 2014 04:12:10 PM UTC, comment #6: 

Compilation went fine when running `make maintainer-clean` beforehand as described here:
http://lists.gnu.org/archive/html/octave-maintainers/2014-09/msg00040.html
It would still be useful to build Octave with Bison 2.4.x.

Guillaume <gyom>
Tue 19 Aug 2014 05:57:35 PM UTC, comment #5: 

I built and installed bison 3.0.2 (which required to build and install a more recent version of m4) and added it to the PATH (the bin directory) but still got the same error message when building Octave.
Just in case it might be useful, before the error message copied in my initial post, there is also a similar warning:

parse-tree/lex.cc:3991:13: warning: unused parameter ‘yyscanner’
parse-tree/lex.cc:4331:7: warning: unused parameter ‘yyscanner’
parse-tree/lex.cc:4336:7: warning: unused parameter ‘yyscanner’
parse-tree/lex.cc:4348:6: warning: unused parameter ‘yyscanner’

Guillaume <gyom>
Tue 19 Aug 2014 05:08:28 PM UTC, comment #4: 

I get the same error building default rev 8c648c3a2c8f using bison 2.4.3.

Mike Miller <mtmiller>
Project Administrator
Tue 19 Aug 2014 04:36:50 PM UTC, comment #3: 

I recently made some changes to allow Octave to be built with Bison 3.0.x.  I didn't intend to break things for earlier versions.  I'll try to take a look at making it work again.

You should be able to build and install bison in whatever directory you like, then put that directory in your PATH ahead of any other that contains bison when you run configure and make.

John W. Eaton <jwe>
Project Administrator
Tue 19 Aug 2014 03:46:58 PM UTC, comment #2: 

Sorry for the unclear message: I am trying to compile revision 8c648c3a2c8f
The version of bison that is installed on my system is 2.4.1, which I understand is quite dated but was sufficient to compile Octave until now.
Just in case I do it wrongly, I compile with:

hg pull http://www.octave.org/hg/octave
hg update
./bootstrap
setenv JAVA_HOME /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0
./configure ...
make

If Octave now requires a more recent version of bison than the one I have, is there a way for me to install and compile manually bison 3.0 somewhere and let Octave know where to find that version instead of the system one?

Many thanks for your help.

Guillaume <gyom>
Tue 19 Aug 2014 03:11:07 PM UTC, comment #1: 

Your "tip" is probably not the same as mine, and even if it was at some point, it could easily change from when you reported the problem until now.  To clearly identify what revision you are using, please report the output from running "hg id" in your archive.

What version of bison are you using?

John W. Eaton <jwe>
Project Administrator
Tue 19 Aug 2014 01:57:54 PM UTC, original submission:  

When trying to compile the tip, I get the following error:

parse-tree/oct-parse.cc: In function ‘int yypull_parse(yypstate*, octave_base_parser&)’:
parse-tree/oct-parse.cc:3969:14: error: ‘yylex’ was not declared in this scope
oct-parse.yy: In member function ‘int octave_parser::run()’:
oct-parse.yy:3788:29: error: ‘octave_parse’ was not declared in this scope
oct-parse.yy: In member function ‘int octave_push_parser::run(const std::string&, bool)’:
oct-parse.yy:3829:62: error: ‘octave_push_parse’ was not declared in this scope
oct-parse.yy: In member function ‘int octave_parser::run()’:
oct-parse.yy:3789:1: warning: control reaches end of non-void function

Guillaume <gyom>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #32051:  diffs.txt added by jwe (669B - text/plain)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by mtmiller (Posted a comment)
  • -email is unavailable- added by jwe (Posted a comment)
  • -email is unavailable- added by gyom (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.

     

     

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2014-11-03 mtmiller StatusConfirmed => Fixed
        Open/ClosedOpen => Closed
    2014-09-09 jwe Attached File- => Added diffs.txt, #32051
    2014-08-19 mtmiller StatusNone => Confirmed

    Back to the top


    Powered by Savane 3.5