Follow-up Comment #48, bug #66583 (group groff):

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



    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?66583>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to