[updating subject to something useful for searching]

Hi Deri,

At 2026-02-21T13:50:16+0000, Deri wrote:
> On Saturday, 21 February 2026 02:54:23 GMT G. Branden Robinson wrote:
> > At 2026-02-20T21:28:08+0000, Bjarni Ingi Gislason wrote:
> > > After cloning groff
> > > Error message:
> > >   GROFF    doc/webpage.html
> > > 
> > > pre-grohtml: fatal error: 'pre-grohtml' exited with status 4;
> > > re-run with a different output driver to see diagnostic messages
> 
> This is a strange one!! The error occurs if you don't have the file
> doc/ gnu.eps (because PSPIC can't find it). doc.am makes it (from
> doc/gnu.xpm) but in "out-of-tree" builds it ends up in
> build/doc/gnu.eps, and not found.
> 
> The regression was introduced by commit e9da162af80 (Feb 7, 2026),
> reverting fixes it.

Well then it's _extra_ strange, because I _can't_ reproduce it.  (And
didn't on 7 February, because I would not have pushed if I'd been able
to see this defect, which I certainly should have because I do an out of
tree build 3-4 times[1] immediately before pushing.)

> The groff "dist" version has no such problem since doc.am has:-
> 
> # Provide a copy of the image in the distribution archive to accommodate
> # systems without a tool to generate it from an X pixmap.
> dist-hook: dist-gnueps

That might explain why we haven't heard tell of this from any of our RC
testers, since they're all working from a distribution archive.

> Here's some proof of the above:-
> 
> [derij@pip build (master)]$ make
> make  all-recursive
> make[1]: Entering directory '/home/derij/groff-git/groff/build'
> make[2]: Entering directory '/home/derij/groff-git/groff/build'
>   GROFF    doc/webpage.html
> pre-grohtml: fatal error: 'pre-grohtml' exited with status 4; re-run with a 
> different output driver to see diagnostic messages
> make[2]: *** [Makefile:19441: doc/webpage.html] Error 4
> make[2]: Leaving directory '/home/derij/groff-git/groff/build'
> make[1]: *** [Makefile:13310: all-recursive] Error 1
> make[1]: Leaving directory '/home/derij/groff-git/groff/build'
> make: *** [Makefile:7570: all] Error 2

Can't reproduce.

$ \rm -r build
$ (mkdir build && cd build && ../configure)
...
$ make -C build -j
...
fonts_n.roff: listing font 'ZDR'...
troff: backtrace: file 'man/groff_char.7':1060
troff:man/groff_char.7:1060: warning: special character '.j' not defined
troff: backtrace: file 'man/groff_char.7':1466
troff:man/groff_char.7:1466: warning: special character 'vA' not defined
troff: backtrace: file 'man/groff_char.7':1596
troff:man/groff_char.7:1596: warning: special character 'bs' not defined
troff: backtrace: file 'man/groff_char.7':1769
troff:man/groff_char.7:1769: warning: special character '-+' not defined
troff: backtrace: file 'man/groff_char.7':1818
troff:man/groff_char.7:1818: warning: special character 'coproduct' not defined
troff: backtrace: file 'man/groff_char.7':1918
troff:man/groff_char.7:1918: warning: special character '+e' not defined
make[2]: Leaving directory '/home/branden/src/GIT/groff/build'
make[1]: Leaving directory '/home/branden/src/GIT/groff/build'
make: Leaving directory '/home/branden/src/GIT/groff/build'

$ find . -name gnu.eps
./doc/gnu.eps

Hmm, so why was the `PSPIC` macro able to find the image in the "wrong"
place?  Let's delete "webpage.html" and force a rebuild, verbosely.

$ \rm build/doc/webpage*
$ make -C build V=1 doc/webpage.html && echo SUCCESS
make: Entering directory '/home/branden/src/GIT/groff/build'
/usr/bin/mkdir -p doc \
&& GROFF_COMMAND_PREFIX= GROFF_BIN_PATH="/home/branden/src/GIT/groff/build" 
/home/branden/src/GIT/groff/build/groff 
-M/home/branden/src/GIT/groff/build/tmac 
-M/home/branden/src/GIT/groff/build/../tmac 
-F/home/branden/src/GIT/groff/build/font 
-F/home/branden/src/GIT/groff/build/../font -ww -b -t -I 
/home/branden/src/GIT/groff/build/../doc -P-jdoc/webpage -P-nrb \
  -P-Iwebpage -P-Ddoc/img -Thtml -ms 
/home/branden/src/GIT/groff/build/../doc/webpage.ms \
  > doc/webpage.html.tmp \
  && mv doc/webpage.html.tmp doc/webpage.html
make: Leaving directory '/home/branden/src/GIT/groff/build'
SUCCESS

It looks to me like my builds are succeeding because groff is being
passed this option:

 -I /home/branden/src/GIT/groff/build/../doc

That comes from the following lines in doc/doc.am.

# groff(1)'s `-I` implies `-g` and `-s`, so we must depend on grn and
# soelim even though the document doesn't require them.
doc/webpage.html: grn soelim
doc/webpage.html: $(DOC_GNU_EPS) tmac/www.tmac tbl
doc/webpage.html: $(doc_srcdir)/groff.css
doc/webpage.html: $(doc_srcdir)/webpage.ms $(TMAC_PACKAGE_MS)
        $(GROFF_V)$(MKDIR_P) $(doc_builddir) \
        && $(DOC_GROFF) -t -I $(doc_srcdir) -P-jdoc/webpage -P-nrb \
          -P-Iwebpage -P-Ddoc/img -Thtml -ms $(doc_srcdir)/webpage.ms \
          > [email protected] \
          && mv [email protected] $@

> Now fix it.

For me, this is working as planned and intended.

Try the "nuke-and-rebuild webpage.html" depicted above on your system...

> [derij@pip build (master)]$ cp doc/gnu.eps ../doc

...after removing that, and show me what you get.  I'm acutely
interested to understand the difference that is breaking things for you.

> If you are not seeing the error please check you have not got a rogue
> doc/ gnu.eps in the source doc/ directory.

I don't.  See my "find" command above.

Regards,
Branden

[1] One "paranoid", with lots of compiler options like Bjarni uses, one
    "fast" without them, and one unnamed, but which makes the
    "distcheck" target which in turn requires "dist", which assembles
    and builds a distribution archive as part of your build.  Prior to
    an anticipated push, I perform the builds in this order so I can
    catch problems as early as possible, aborting the process where
    necessary to suss out where I made a mistake, fix it, and then
    restart the procedure.

Attachment: signature.asc
Description: PGP signature

Reply via email to