groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HEAD build failure with OpenBSD yacc


From: G. Branden Robinson
Subject: Re: HEAD build failure with OpenBSD yacc
Date: Tue, 19 Mar 2024 13:12:57 -0500

Hi Lennart,

At 2024-03-19T17:30:20+0000, Lennart Jablonka wrote:
> Quoth G. Branden Robinson:
> > Popping the stack from history, I cannot reproduce this problem building
> > on OpenBSD 7.4.  Bison is installed and found by groff's configure
> > script.  It's not my machine; I don't have superuser privileges.
> 
> Yes, it works using bison.  Even without root access, you can use
> OpenBSD’s yacc: Delete src/preproc/eqn/eqn.cpp and re-run configure
> with ac_cv_prog_YACC=/usr/bin/yacc set.

Thanks.  More time with the Autoconf manual might benefit me...

> > Further, eqn.ypp says this, grabbing the "config.h" header file that
> > gnulib demands so ubiquitously:
> > 
> > %{
> > #ifdef HAVE_CONFIG_H
> > #include <config.h>
> > #endif
> > 
> > #include <stdio.h>
> > #include <string.h>
> > #include <stdlib.h>
> > 
> > #include "lib.h"
> > #include "box.h"
> > extern int non_empty_flag;
> > int yylex();
> > void yyerror(const char *);
> > %}
> 
> Yes, but do look at yacc’s output, eqn.cpp.  Using OpenBSD’s yacc, eqn.cpp
> starts with this:
> 
>       #include <stdlib.h>
>       #include <string.h>
>       #define YYBYACC 1
>       #define YYMAJOR 1
>       #define YYMINOR 9
>       #define YYLEX yylex()
>       #define YYEMPTY -1
>       #define yyclearin (yychar=(YYEMPTY))
>       #define yyerrok (yyerrflag=0)
>       #define YYRECOVERING() (yyerrflag!=0)
>       #define YYPREFIX "yy"
>       #line 19 "src/preproc/eqn/eqn.ypp"
>       #ifdef HAVE_CONFIG_H
>       #include <config.h>
>       #endif
> 
>       #include <stdio.h>
>       #include <string.h>
>       #include <stdlib.h>
> 
>       #include "lib.h"
>       #include "box.h"
>       extern int non_empty_flag;
>       int yylex();
>       void yyerror(const char *);

Okay, yes, I can confirm this output and the failure.

It appears to me that byacc is just not playing nicely with Autoconf
here.  And maybe not with other tools, since it's _assuming_ that the
output will require stdlib.h and string.h.  (Its own boilerplate code
indeed might, but its aggression here has clear negative consequences.)

I don't see a path forward here except documenting that OpenBSD's byacc
is not usable for repo builds.  (Since we ship eqn.[ch]pp in
distribution archives, the impact on most users sourcing their groff
from GNU should be small.)

What do you think?

Regards,
Branden

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]