libIDL-0.8.11 fails to compile, so I have modified the MakeFile to see the errors and I've seen this: bison -y -d -v ./parser.y ./parser.y:610.9-10: $$ for the midrule at $6 of `struct_type' has no declared type ./parser.y:627.9-10: $$ for the midrule at $10 of `union_type' has no declared type make: *** [stamp-parser] Error 1 In the attached file it's my emerge --info Reproducible: Always
Created attachment 171290 [details] emerge --info
(In reply to comment #0) > libIDL-0.8.11 fails to compile, so I have modified the MakeFile to see the > errors and I've seen this: > bison -y -d -v ./parser.y > ./parser.y:610.9-10: $$ for the midrule at $6 of `struct_type' has no declared > type > ./parser.y:627.9-10: $$ for the midrule at $10 of `union_type' has no declared > type > make: *** [stamp-parser] Error 1 > In the attached file it's my emerge --info > > Reproducible: Always > Temp fix : downgrade to bison 2.3 emerge -a =bison-2.3 libIDL (Then updrade to latest bison again).
While it's revealed by bison 2.4, according to bug-bison list, bug lies in libIDL, cause it's using a construct, that, while accepted in 2.3, was invalid even then.
this is a problem still.
So basically bison-2.4.1 is supposed to be made to still accept this case, but not a bison-2.5 in the future, if I remember right from reading the bug-bison mailing list for the purpose of figuring out a fix for another project (coreboot). As bison-2.4(.0) has other issues, some are even suggesting to not distribute it and wait for 2.4.1 anyway. Hence if bison-2.4 would be masked and 2.4.1 entered the tree first from the 2.4 series we'd have some time for libIDL fix being included in an upstream release. This all was under the assumption 2.4.1 will accept what current libIDL does, but as I said I'm not sure I remember that one right.
Should be fixed with bison-2.4-r1. Please test.
There's a good chance it won't. There are two outstanding types of bugs with 2.4: first is missing semicolon - and r1 will probably fix that the other is this one - I don't think r1 will fix it, cause according to bison upstream, bison 2.3 has incorrectly accepted this Points of reference: http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00013.html http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00015.html Quoting: It is a bug that Bison 2.3 accepts this line. The user failed to specify the semantic type for the mid-rule value (referenced by $$ here but $6 in later actions). Bison 2.3 accidentally uses the semantic type from the LHS (which would be referenced by $$ if this were not a mid-rule). The user is lucky that this just happens to be the right semantic type. Bison 2.3a and later correctly spot this as a user error and fail because they realize there's no logical way to proceed. End quote.
I yesterday created a patch that solves the problem as stated in the above referred mail thread? It is located at: http://sacu-consulting.de/parser.y.patch
I applied the patch given by Sascha Cunz in #8. libIDL compiles and installs ok now using bison-2.4. Thank you very much for providing it!
Okay, this is in portage now, without a bump. Thanks everyone.
*** Bug 246681 has been marked as a duplicate of this bug. ***