bug-groff
[Top][All Lists]
Advanced

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

Re: [bug #66583] [PATCH] allow building groff without makeinfo


From: Alejandro Colomar
Subject: Re: [bug #66583] [PATCH] allow building groff without makeinfo
Date: Tue, 31 Dec 2024 17:34:49 +0100

Hi Branden,

On Tue, Dec 31, 2024 at 11:01:31AM -0500, G. Branden Robinson wrote:
> Follow-up Comment #47, bug #66583 (group groff):
> 
> At 2024-12-31T10:27:22-0500, Alejandro Colomar wrote:
> > Most likely.  I sometimes install stuff with --no-install-recommends,
> > which might have been the responsible for this.  It's good that it
> > unveiled a bug in groff's build system
> 
> This conclusion still seems hasty.  Maybe you've found a bug in
> Automake.

And Automake is part of groff's build system.  I'm not saying you or any
groff maintainer did anything wrong, at all.  I'm saying that autotools
people designed a build system full of brain damage, which has some
interesting bugs, and also makes it easy to misuse (or hard to use
correctly, or both).

> > But `make -k` should continue after a TeX failure,
> 
> ...and it does, for a while at least.

Precisely until it runs `make all-recursive`.

> > and successfully build the binaries.  (Admittedly, I forgot to show
> > that in my previous post.)
> >
> > Below goes actual proof.  This runs after the session I showed before.
> [...]
> > alx@devuan:~/tmp/groff/groff$ make -k
> > GEN      doc/groff.dvi
> > This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Debian)
> [...]
> > /usr/bin/texi2dvi: etex exited with bad status, quitting.
> > make: *** [Makefile:16786: doc/groff.dvi] Error 1
> > GEN      doc/groff.pdf
> > This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Debian)
> > /usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
> [...]
> > make: *** [Makefile:16801: doc/groff.pdf] Error 1
> > GEN      font/devpdf/DESC
> > GEN      font/devpdf/Foundry
[...]
> > GEN      charset.alias
> > GEN      ref-add.sed
> > GEN      ref-del.sed
> > make: Target 'all' not remade because of errors.

The line above is the important one.

'all' is not remade because of errors in its dependencies.

        $ grepc -n -xmk -tr all Makefile
        Makefile:6773:all: $(BUILT_SOURCES)
                $(MAKE) $(AM_MAKEFLAGS) all-recursive
        Makefile:16742:all: $(GROFF_INFO) $(GROFF_TXT) $(GROFF_HTML) 
$(GROFF_DVI) $(GROFF_PDF)
        Makefile:17140:all: font/devpdf/stamp
        Makefile:17406:all: charset.alias ref-add.sed ref-del.sed
        Makefile:17884:all: tmac/stamp-wrap
        Makefile:17964:all: generate_man_files

The target 'all' consists of `make all-recursive`, which is where the
actual stuff is really built, I suspect.  Hmm, that's easy to check.
I've now run `make all-recursive` and the good stuff started building,
so yes, this is a recursive build, and yes, that was the cause why
`make -k` didn't build it, and yes, this is likely a bug somewhere in
autotools or in the groff use of autotools (which would itself be a
problem of autotools being so hard to use correctly).

> The very fact that the build proceeded after groff.dvi to attempt
> groff.pdf, and after _that_ failed to generate afmtodit--successfully--
> 
> > GEN      afmtodit
> 
> ...tells me that "make -k" is doing what it is supposed to do.

Indeed.

> At least up to a point.

The point is that groff.dvi and groff.pdf seem to be prerequisites of
'all', while the binaries seem to be part of the 'all-recursive' target,
which cannot be built at all.

`make -k` continues building other targets whose dependencies can be
built.  It doesn't build targets whose dependencies cannot be built (for
that I would need `make -i`, which yes, is a workaround for groff's
broken build system).

> 
> Why it's not attempting to make libgroff.a, pic, eqn, tbl, troff, and so
> forth, I don't know.

See my comments above.  All of those are build within
`make all-recursive`, and that cannot start if any of the prerequisites
of 'all' fail to build.

> What happens if you "make -k" any of these
> targets?

You don't even need -k.  If I run `make pic`, it successfully builds the
pic binary.  And if I run `make all-recursive`, the entire recursive
build starts.  So the dependencies are incorrectly set.

> > alx@devuan:~/tmp/groff/groff$ find * -perm -0001 -not -type d | grep -v /
> > INSTALL
> > afmtodit
> > bootstrap
> > config.status
> > configure
> > mdate.pl
> > test-groff
> > update-copyright.sh
> 
> Okay, that agrees with the build log above.  There's "afmtodit".

Cheers,
Alex

>   {savane: user = 296833; tracker = bugs; item = 66583}

-- 
<https://www.alejandro-colomar.es/>

Attachment: signature.asc
Description: PGP signature


reply via email to

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