Hi,
I reported some build races a while ago. It appears there are still
some issues left and they weren't an isolated problem. I tried to make
a simple reproducer for the original problem I ran into but ran into
further problems. To illustrate what I saw (on a fresh checkout of
groff from git):
$ make doc/groff-man-pages.pdf
CXX src/preproc/soelim/soelim.o
CXX src/libs/libgroff/libgroff_a-change_lf.o
CXX src/libs/libgroff/libgroff_a-cmap.o
CXX src/libs/libgroff/libgroff_a-color.o
CXX src/libs/libgroff/libgroff_a-cset.o
CXX src/libs/libgroff/libgroff_a-curtime.o
CXX src/libs/libgroff/libgroff_a-device.o
CXX src/libs/libgroff/libgroff_a-errarg.o
CXX src/libs/libgroff/libgroff_a-error.o
CXX src/libs/libgroff/libgroff_a-fatal.o
CXX src/libs/libgroff/libgroff_a-filename.o
CXX src/libs/libgroff/libgroff_a-font.o
src/libs/libgroff/font.cpp:29:10: fatal error: stdcountof.h: No such file or
directory
29 | #include <stdcountof.h>
| ^~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:11167: src/libs/libgroff/libgroff_a-font.o] Error 1
$ make lib/stdcountof.h
GEN lib/stdcountof.h
CC lib/libgnu_a-c32isalnum.o
In file included from lib/c32isalnum.c:26:
lib/c32is-impl.h:35:10: fatal error: unictype.h: No such file or
directory
35 | #include "unictype.h"
and so on. I couldn't work out the right way to add dependencies on
lib/* to src/libs/libgroff.
Anyway, with lib built (which I struggled to find a neat way to do but
make and Ctrl+C did it):
make doc/groff-man-pages.pdf
GROFF doc/groff-man-pages.pdf
/groff/groff: error: couldn't exec preconv: No such file or directory
pdfmom: fatal error: test-groff exited with status 16
make: *** [Makefile:19752: doc/groff-man-pages.pdf] Error 1
make: *** Deleting file 'doc/groff-man-pages.pdf'
which leads me to believe this is needed:
diff --git a/doc/doc.am b/doc/doc.am
index 9898a19d8..a30b3e599 100644
--- a/doc/doc.am
+++ b/doc/doc.am
@@ -289,7 +289,7 @@ $(DOC_GMP_COVER_PAGE):
$(doc_srcdir)/groff-man-pages-cover.groff.in
doc/groff-man-pages.pdf: $(GROFF_MAN_PAGES_ALL) \
$(DOC_GMP_COVER_PAGE) \
- eqn pic tbl pdfmom \
+ eqn pic tbl pdfmom preconv \
$(TMAC_PACKAGE_MAN) $(TMAC_PACKAGE_MDOC) font/devps/freeeuro.pfa
$(GROFF_V)$(DOC_PDFMOM) -K utf-8 -pet -mandoc -dHF=HB -rC1 \
-rCHECKSTYLE=3 -Tpdf $(groffmanpagesoption) \
@@ -298,7 +298,7 @@ doc/groff-man-pages.pdf: $(GROFF_MAN_PAGES_ALL) \
$(tmac_srcdir)/sv.tmac $(GROFF_MAN_PAGES2) \
$(tmac_srcdir)/en.tmac $(GROFF_MAN_PAGES3) > $@
-doc/groff-man-pages.utf8.txt: $(GROFF_MAN_PAGES_ALL) eqn pic tbl \
+doc/groff-man-pages.utf8.txt: $(GROFF_MAN_PAGES_ALL) eqn pic tbl preconv \
$(TMAC_PACKAGE_MAN) $(TMAC_PACKAGE_MDOC)
$(GROFF_V)$(DOC_GROFF) -K utf-8 -pet -Tutf8 -mandoc \
-rCHECKSTYLE=3 $(GROFF_MAN_PAGES1) \
but there may be further missing dependencies. I'd also note:
$ make doc/automake.pdf
[...]
GROFF doc/automake.pdf
groff/groff: error: couldn't exec preconv: No such file or directory
groff/groff: error: couldn't exec pic: No such file or directory
groff/groff: error: couldn't exec eqn: No such file or directory
pdfmom: fatal error: test-groff exited with status 24
make: *** [Makefile:19637: doc/automake.pdf] Error 1
which is probably:
diff --git a/doc/doc.am b/doc/doc.am
index 9898a19d8..47ef1621c 100644
--- a/doc/doc.am
+++ b/doc/doc.am
@@ -143,7 +143,7 @@ EXTRA_DIST += $(DOCFILES_NOINST)
EXTRA_DIST += doc/automake.mom
docpdfdocdir = $(pdfdocdir)
nodist_docpdfdoc_DATA = $(PROCESSEDDOCFILES_PDF)
-doc/automake.pdf: doc/automake.mom pdfmom $(TMAC_PACKAGE_MOM)
+doc/automake.pdf: doc/automake.mom pdfmom pic eqn preconv $(TMAC_PACKAGE_MOM)
# GNU PIC html documentation, installed in $(htmldocdir)
# Other pic*.html files are installed by the local rule
to fix. Those are just the ones we've run into though.
It was bad enough someone suggested we should patch groff:
--- a/Makefile.am~ 2026-05-15 13:23:08.000000000 +0100
+++ b/Makefile.am 2026-05-15 13:29:17.053867035 +0100
@@ -556,15 +556,0 @@
-include $(top_srcdir)/contrib/chem/chem.am
-include $(top_srcdir)/contrib/eqn2graph/eqn2graph.am
-include $(top_srcdir)/contrib/gdiffmk/gdiffmk.am
-include $(top_srcdir)/contrib/glilypond/glilypond.am
-include $(top_srcdir)/contrib/gperl/gperl.am
-include $(top_srcdir)/contrib/gpinyin/gpinyin.am
-include $(top_srcdir)/contrib/grap2graph/grap2graph.am
-include $(top_srcdir)/contrib/hdtbl/hdtbl.am
-include $(top_srcdir)/contrib/install-font/install-font.am
-include $(top_srcdir)/contrib/mm/mm.am
-include $(top_srcdir)/contrib/mom/mom.am
-include $(top_srcdir)/contrib/pic2graph/pic2graph.am
-include $(top_srcdir)/contrib/rfc1345/rfc1345.am
-include $(top_srcdir)/contrib/sboxes/sboxes.am
-include $(top_srcdir)/doc/doc.am
so that we could avoid these issues!
https://git.openembedded.org/openembedded-core/commit/?id=9deeb7474b2586eb031e4f00a644aed9ccf8cb19
I wasn't sure if there was a better way to avoid the bits of the build
we don't really need just to get the tools?
Cheers,
Richard