webpage.html sometimes doesn't build out-of-tree? (was: error by compiling)

"G. Branden Robinson" <[email protected]>
Newsgroups gmane.comp.printing.groff.general
Message-ID <20260221181350.m3ddp7fww7bmayhi@illithid>
[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.
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmmZ9dYACgkQ0Z6cfXEm
bc7CDhAAi1LJfoEdD4eP3bmpm7ljiVTl5tXVLPe5j37QMavN/novAYfq+A8/ytzv
zed14ALRkimTvcg6QhsQpaLUIyQdjX10rPRFjFAaUEoDDvTuzGlJvS2eWVTqPxp8
Cf4TWMuWmbZb4lw20puKQso8cPNptrMJUaTDeXY6KmRYQns9TOzikmyZoNc5T+DO
Fxn/9S6KHgAQu8JitTD3FosFUgdCCHJjS+a1V/Xzy5NFkqxeBQ2/8+DhPPfhlLM+
Kce5PPY3M9SUGN+zCKDuyrogzFrxHTQQy7TeR44xuJLwUcj8KBcHB5mdPOUAGqmE
aVIFuWWYq5kytKkcO2byMwJwMNvt8zwXgFPEE1Bpm7uUMg8H70ykGba8QJVIy5tn
PEhDXFJ8tQmbM8/sXeM/vTyTcHVD+Gh+AdOL+vwxmBLP8SQ4+ywdYMgkTYiF2pa0
cbSSn6v40N9s1TGYFXGgiFu7fwuU3L3ruGPGfaqrnIiUfkuslonEZX1I7m2n/GhX
zsy0vL/m26DWZPWYYc9r2Y/UAgVYIbR7B8tjPyF2b34RZwBC+DcanBKfaeT3X0rN
fNErsKC59/eKTY/Gx8m1gq1rn7MRiYNbufNGXqCw1tsHPX6p3qFNpGOCQnN8xfxn
nWDG3T6wVCRFUFddTodbV+v+nuBAxyMi6V5yYHseVRp549QJGVA=
=YDrH
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.