[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #66583] [PATCH] allow building groff without makeinfo
From: |
Alejandro Colomar |
Subject: |
[bug #66583] [PATCH] allow building groff without makeinfo |
Date: |
Tue, 31 Dec 2024 11:35:09 -0500 (EST) |
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/
signature.asc
Description: PGP signature
- [bug #66583] [PATCH] allow building groff without makeinfo, (continued)
- [bug #66583] [PATCH] allow building groff without makeinfo, anonymous, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, Dave, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, G. Branden Robinson, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, Alejandro Colomar, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, G. Branden Robinson, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, Alejandro Colomar, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, G. Branden Robinson, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo,
Alejandro Colomar <=
- [bug #66583] [PATCH] allow building groff without makeinfo, anonymous, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, anonymous, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, Alejandro Colomar, 2024/12/31
- [bug #66583] [PATCH] allow building groff without makeinfo, anonymous, 2024/12/31