On Sat, Aug 13, 2005 at 11:47:59PM +0100, Dave Beckett wrote:
> On Fri, 2005-08-12 at 10:30 -0700, Matt Kraai wrote:
> > Package: byacc
> > Version: 20050505-1
> > Severity: serious
> > 
> > groff fails to build from source because byacc generates an incomplete
> > declaration of YYSTYPE in the header file.  The first attachement
> > contains the header file it generates.  The second attachment contains
> > a patch that fixes this problem.
> 
> Recording the diff in eql_tab.h from byacc-old/byacc-new:
> 
> --- eqn_tab.h.orig      2005-08-13 23:42:53.000000000 +0100
> +++ eqn_tab.h   2005-08-13 23:43:13.000000000 +0100
> @@ -56,12 +56,5 @@
>  #define SET 312
>  #define GRFONT 313
>  #define GBFONT 314
> -typedef union {
> -       char *str;
> -       box *b;
> -       pile_box *pb;
> -       matrix_box *mb;
> -       int n;
> -       column *col;
> -} YYSTYPE;
> + YYSTYPE;
>  extern YYSTYPE yylval;
> 
> 
> > This is serious because it prevents groff from building.
> 
> OK, shame apt-cache rdepends doesn't show Build-Depends, which is what
> byacc is likely most used for :/
> 
> I've looked at your patch and don't grok it yet.

If it is passed the -d option, byacc writes the contents of the union
to a temporary file in addition to y.tab.c so that it can later read
them from this temporary file and write them to y.tab.h.  This doesn't
work, though, because when it goes to read them from this temporary
file, it creates a new temporary file instead.  It reads nothing from
this new temporary file, which leads to it omitting the body of the
union.

-- 
Matt

Attachment: signature.asc
Description: Digital signature

Reply via email to