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

  • ... Richard Purdie
    • ... G. Branden Robinson
      • ... Paul Eggert
        • ... Bruno Haible via discussion of the GNU roff typesetting system and related software
        • ... G. Branden Robinson
          • ... Paul Eggert
            • ... G. Branden Robinson
              • ... Richard Purdie
                • ... Nguyễn Gia Phong via discussion of the GNU roff typesetting system and related software
                • ... G. Branden Robinson
                • ... G. Branden Robinson

Reply via email to