On Sunday, 1 February 2026 20:31:40 GMT G. Branden Robinson wrote:
> At 2026-01-30T15:42:04+0000, Deri wrote:
> > I am still seeing build issues. :-(
> >
> > First lets agree our 3 test setups:-
> >
> > Basic
> > =====
> > mv your urw font directory(s) somewhere safe.
> > rename gs program to gs.sv
>
> We're testing gropdf's "basic service" level and build system support.
>
> I uninstalled ghostscript, gsfonts, and fonts-urw-base35 packages from
> my Debian machine, _manually_ uninstalled (with "rm -rv") Ghostscript
> 10.06 from $HOME because ghostpdl doesn't support an "uninstall"
> target(!!!); used the following flags, and got the following
> configuration summary and notices.
>
> $ ./configure --prefix=$HOME/groff-HEAD \
> --with-appdefdir=$HOME/groff-HEAD/share/X11/app-defaults
> ...
> GNU roff version 1.24.0.rc2
> ----------------------------------------------------------------------
> installation directory prefix : /home/branden/groff-HEAD
> C++ compiler and options : g++ -g -O2
> use libgroff's memory allocator : no
> C compiler and options : gcc -g -O2
> Perl interpreter version : 5.32.1
> X11 support : enabled
> X11 app defaults directory :
> /home/branden/groff-HEAD/share/X11/app-defaults default paper format
> : letter
> 'groff -l' uses print spooler : lpr
> use URW fonts for PDF output : no
> preconv can use uchardet library : yes
> can build groff.{info,html,txt} : yes
> can build groff.{dvi,pdf} : yes
> ----------------------------------------------------------------------
> configure: No Ghostscript program was found in $PATH.
> ...
> configure: The programs 'gs' and 'ps2ps' were not found in $PATH.
> ...
> configure: 'gropdf' will have reduced function.
> ...
Perfect.
> I'm wondering if I should:
>
> a) report a summary line for the Ghostscript implementation, since its
> name is variable (usually "gs", but can be something else);
> b) report a summary line for ps2ps, which only grohtml uses;
> c) report a summary line for the configured gropdf service level,
> something like
>
> gropdf service level : basic (worst of 3)
> or
> gropdf service level : intermediate (middle of 3)
> or
> gropdf service level : full (best of 3)
>
> and
> d) ditch all three of these lengthy notices.
>
> > see message about missing ghostscript and basic pdf support
>
> Yes.
>
> I next ran "make", and observed no warnings at all.
>
> > after make these fonts available:
> > CB CR CTH download Foundry HI JPM map/ symbolsl.afm TBI
> > util/
> > CBI CSH CTS enc/ HB HR KOG S symbolsl.pfb TI ZD
> > CI CSS DESC EURO HBI JPG KOM SS TB TR
>
> I don't know what you mean by "after make these fonts available". When
> I run "make install" after the foregoing "configure", these font
> description files (and other files) are available.
>
> [returning to composition of this email 2 days later]
>
> Oh! You don't mean, "after[wards], make these fonts available," you
> mean, "after make(1), these fonts [are] available"!
Yes, sorry, should have been clearer.
> You're listing the contents of a build directory, not an installation
> directory.
>
> Yes, I observe the same contents, plus descriptions of the PostScript
> level 2 fonts. I see them in my build's font/devpdf directory, too. I
> don't understand why you don't. BuildFoundries is supposed to copy them
> over from font/devps, and does--for me.
>
> $ (cd ~/groff-HEAD/share/groff/1.24.0/font/devpdf && echo * | fold -sw 72)
> AB ABI AI AR BMB BMBI BMI BMR CB CBI CI CR CSH CSS CTH CTS DESC EURO
> Foundry HB HBI HI HNB HNBI HNI HNR HR JPG JPM KOG KOM NB NBI NI NR PB
> PBI PI PR S SS TB TBI TI TR ZCMI ZD download enc map symbolsl.afm
> symbolsl.pfb
Problem. As this is "basic" only the base-14 (as above) should be observed.
Since there are no U foundry files, this is "intermediate" not "basic". A
further check is required, the contents of download will tell you where the
ghostscript fonts were discovered. For "basic" the download file has virtually
nothing in it.
> N.B., as of groff Git's master branch today, all of
>
> CSH
> CSS
> CTH
> CTS
> JPG
> JPM
> KOG
> KOM
>
> ...disappear, per bug #67971.
>
> https://savannah.gnu.org/bugs/?67971
Thankyou. I just could not get them to work at all and you did not test them
before committing.
> > Currently no pdf documents are built,
>
> Cannot reproduce. For me, almost all _do_ get _built_, but see below.
This was not a true "basic" test (see above), so rest of this is will be
different to mine.
> $ find -name "*.pdf"
> ./contrib/mom/examples/sample_docs.pdf
> ./contrib/mom/examples/mon_premier_doc.pdf
> ./contrib/mom/examples/copyright-chapter.pdf
> ./contrib/mom/examples/letter.pdf
> ./contrib/mom/examples/slide-demo.pdf
> ./contrib/mom/examples/penguin.pdf
> ./contrib/mom/examples/mom-pdf.pdf
> ./contrib/mom/examples/copyright-default.pdf
> ./contrib/sboxes/msboxes.pdf
> ./penguin.pdf
> ./doc/automake.pdf
> ./doc/groff.pdf
>
> typesetting.pdf is missing, which is not a surprise.
>
> (But fixed regardless in groff Git's master branch, as of today.)
>
> groff-man-pages.pdf is also missing, which _is_ a surprise.
>
> > even though with the recent changes to grops.1 and gropdf.1 everything
> > could be built except typesetting.mom (which could be added to the
> > happy band with adding a conditional .FAM code which uses H or T if N
> > or P are not available).
>
> I agree that almost no PDFs get _installed_.
>
> $ find ~/groff-HEAD -name "*.pdf"
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/penguin.pdf
>
> Remembering that Automake segregates Texinfo stuff, I issue a request
> for an additional target.
>
> $ make install-doc
> ...
> $ find ~/groff-HEAD -name "*.pdf" | sort
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/penguin.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/groff.pdf
>
> We should be able to produce groff-man-pages.pdf even at the basic
> service level, because the font file backing groff's EURO font,
> "freeeuro.pfa" is always available regardless of configuration. (And
> as I understand it, with modern renderers/printers even that should not
> be necessary.)
>
> So that's a bug. At the basic service level, "make install" should
> install all gropdf-generated PDFs, except for "typesetting.pdf", which
> at present it can't generate due to the hard dependency on the URW
> fonts. (A hard dep under consideration for removal.[1] EDIT: And now
> resolved in the master branch.)
>
> Bertrand's "automake.{mom,pdf}" document is in a similar situation; it
> uses only the base 14 fonts of the PDF standard, so we should be able to
> both build it at gropdf's basic service level (we do), and we should
> install it (we don't). The latter is another bug.
>
> I think I see the problem...in "doc/doc.am".
>
> 90 if USE_GROPDF
> 91 PROCESSEDDOCFILES_PDF = \
> 92 doc/automake.pdf \
> 93 doc/groff-man-pages.pdf
> 94 endif
>
> We don't need that conditional. `USE_GROPDF` is ill-named.
>
> Looking over the file, _every_ use of that Automake variable in
> "doc/doc.am" appears to be spurious except for this one:
>
> 44 # There's no point crashing the build due to fonts being unavailable for
> 45 # embedding (or selection, even, when their metrics are missing) if we
> 46 # knew at configuration time that the venture wouldn't come off. 47 #
> 48 # We embed all fonts (-P-e) (if we can) to (1) honor the current PDF
> 49 # standard, (2) ensure consistent rendering of the document, and (3)
> 50 # exercise this feature of gropdf.
> 51 if HAVE_URW_FONTS
> 52 if USE_GROPDF
> 53 pdfmomoption = -P-W
> 54 groffmanpagesoption = -P-e
> 55 endif
> 56 endif
>
> And if `USE_GROPDF` no longer has practical application, that one can go
> too. (We _do_ still require `HAVE_URW_FONTS`!) I'll experiment with
> this before my next push.
>
> > ============
> > rename gs.sv back to gs
>
> We're testing gropdf's "intermediate service" level and build system
> support.
>
> $ make uninstall
> $ make distclean # added in revision of this email
> ...
> $ sudo apt install ghostscript
> in my case.
>
> That drags in "fonts-urw-base35" as a dependency, so I'll have to tell
> the build to ignore the URW fonts.
>
> > configure --without-urw-fonts
>
> $ ./configure --prefix=$HOME/groff-HEAD \
> --with-appdefdir=$HOME/groff-HEAD/share/X11/app-defaults \
> --without-urw-fonts
> ...
> GNU roff version 1.24.0.rc2
> ----------------------------------------------------------------------
> installation directory prefix : /home/branden/groff-HEAD
> C++ compiler and options : g++ -g -O2
> use libgroff's memory allocator : no
> C compiler and options : gcc -g -O2
> Perl interpreter version : 5.32.1
> X11 support : enabled
> X11 app defaults directory :
> /home/branden/groff-HEAD/share/X11/app-defaults default paper format
> : letter
> 'groff -l' uses print spooler : lpr
> use URW fonts for PDF output : no
> preconv can use uchardet library : yes
> can build groff.{info,html,txt} : yes
> can build groff.{dvi,pdf} : yes
> ----------------------------------------------------------------------
> configure: Buggy version of Ghostscript detected.
> ...
>
> > see no messages about ghostscript and pdf support
>
> Almost. Because my Debian installation is long in the tooth, I get this
> one:
>
> ...
> configure: Buggy version of Ghostscript detected.
> ...
>
> ...but it's irrelevant to this issue. The only consequence is a
> misplaced \[lh] glyph when rendered.
>
> $ make && make install
>
> > after make these fonts available:
> > AB BMBI CI CTS Foundry HNBI JPM NBI PI symbolsl.afm
> > TR
> > ABI BMI CR DESC HB HNI KOG NI PR symbolsl.pfb
> > util/ AI BMR CSH download HBI HNR KOM NR S TB
> > ZCMI AR CB CSS enc/ HI HR map/ PB SS TBI
> > ZD BMB CBI CTH EURO HNB JPG NB PBI stamp TI
>
> Again I don't know what this means. [EDIT: I now do.] "configure &&
> make && make install" should suffice to "make these fonts available".
> [And it seems to.]
Great this is an "intermediate" as expected.
> No warnings except regarding our usual 6 missing friends in
> groff_char(7). (I didn't get those warnings in the "basic service"
> build, because the build _wrongly_ omitted generation of
> "groff-man-pages.pdf". See the stuff about `USE_GROPDF` above.)
>
> $ (cd ~/groff-HEAD/share/groff/1.24.0/font/devpdf && echo * | fold -sw 72)
> AB ABI AI AR BMB BMBI BMI BMR CB CBI CI CR CSH CSS CTH CTS DESC EURO
> Foundry HB HBI HI HNB HNBI HNI HNR HR JPG JPM KOG KOM NB NBI NI NR PB
> PBI PI PR S SS TB TBI TI TR ZCMI ZD download enc map symbolsl.afm
> symbolsl.pfb
>
> This is the same set of files as at the basic service level...for me.
This is correct, your "basic" found ghostscript fonts!!
> (You show a "util/" directory and I don't because you're listing
> "font/devpdf" in your _build_ directory, and I'm listing "font/devpdf"
> in my _installation_ directory. The latter is what matters for groff
> functionality in user-, as opposed to developer-, -facing scenarios.)
You are correct, but if the developer directory is incorrect so will be
install (but not vice-versa).
> > [derij@pip build (master)]$ ls contrib/mom/examples/
> > copyright-chapter.pdf letter.pdf mon_premier_doc.pdf slide-demo.pdf
> > copyright-default.pdf mom-pdf.pdf sample_docs.pdf
> >
> > No typesetting.pdf even though N and P are available.
>
> Concur. With two commits, one from Peter and one from me, that should
> be resolved in groff Git's master branch.
>
> > groff-man-pages.pdf is built.
>
> Concur.
>
> $ find ~/groff-HEAD -name "*.pdf" | sort
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/copyright-chapt
> er.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/copyright-defa
> ult.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/letter.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/mom-pdf.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/mon_premier_do
> c.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/penguin.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/sample_docs.pd
> f
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/slide-demo.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/automake.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/groff-man-pages.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/mom-pdf.pdf
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/msboxes.pdf
>
> This is everything I expect to see, almost.
>
> $ make install-doc
> ...
> $ find ~/groff-HEAD -name "groff.pdf"
> /home/branden/groff-HEAD/share/doc/groff-1.24.0/pdf/groff.pdf
>
> That's better.
>
> > Full
> > ====
> > mv your urw fonts directory back from whence it came
>
> Not necessary in my case.
>
> > configure (option --with-urw-fonts-dir if it is non-standard place)
>
> All I have to do is uninstall and re-configure without
> --without-urw-support.
>
> $ make uninstall
> ...
> $ ./configure --prefix=$HOME --with-appdefdir=$HOME/share/X11/app-defaults
> ...
> GNU roff version 1.24.0.rc2
> ----------------------------------------------------------------------
> installation directory prefix : /home/branden/groff-HEAD
> C++ compiler and options : g++ -g -O2
> use libgroff's memory allocator : no
> C compiler and options : gcc -g -O2
> Perl interpreter version : 5.32.1
> X11 support : enabled
> X11 app defaults directory :
> /home/branden/groff-HEAD/share/X11/app-defaults default paper format
> : letter
> 'groff -l' uses print spooler : lpr
> use URW fonts for PDF output : yes
> URW fonts directory : /usr/share/fonts/type1/urw-base35/
> preconv can use uchardet library : yes
> can build groff.{info,html,txt} : yes
> can build groff.{dvi,pdf} : yes
> ----------------------------------------------------------------------
> ...
>
> > see no messages about ghostscript and pdf support
>
> I get this guy again, expected, understood, and irrelevant.
>
> configure: Buggy version of Ghostscript detected.
>
> $ make && make install
>
> Again, no warnings except regarding our usual 6 missing friends in
> groff_char(7).
>
> But--I get a build failure!
>
> GROFF contrib/mom/examples/typesetting.pdf
> troff: backtrace: './contrib/mom/om.tmac':574: macro 'FAM'
> troff: backtrace: file 'contrib/mom/examples/typesetting.mom':306
> troff:contrib/mom/examples/typesetting.mom:306: warning: cannot select font
> 'B' troff: backtrace: './contrib/mom/om.tmac':609: macro 'FT'
> troff: backtrace: file 'contrib/mom/examples/typesetting.mom':307
> troff:contrib/mom/examples/typesetting.mom:307: warning: cannot select font
> 'R' [mom]: Either font style "R" at line 307 does not exist in family
> "U-N", or family "U-N" has not been installed.
> [mom]: Aborting 'contrib/mom/examples/typesetting.mom' at FT, line 307.
> pdfmom: fatal error: test-groff exited with status 4
>
> That's odd. Did BuildFoundries go wrong?
>
> No...it never ran!
>
> Oh bletch, I didn't "make distclean" between builds. I'd better start
> all over.
>
> [much later]
>
> After working back to this point through "uninstall" and
> "distclean"-enabled basic and intermediate service builds, I get a
> successful build. The operation of BuildFoundries was obvious.
>
> $ make && make install
>
> > after make these fonts available
> > AB CI Foundry JPM PI TR U-CBI U-HR U-TB
> > ABI CR HB KOG PR U-AB U-CI U-NB U-TBI
> > AI CSH HBI KOM S U-ABI U-CR U-NBI U-TI
> > AR CSS HI map/ SS U-AI U-HB U-NI util/
> > BMB CTH HNB NB stamp U-AR U-HBI U-NR U-TR
> > BMBI CTS HNBI NBI symbolsl.afm U-BMB U-HI U-PB U-ZCMI
> > BMI DESC HNI NI symbolsl.pfb U-BMBI U-HNB U-PBI U-ZD
> > BMR download HNR NR TB U-BMI U-HNBI U-PI ZCMI
> > CB enc/ HR PB TBI U-BMR U-HNI U-PR ZD
> > CBI EURO JPG PBI TI U-CB U-HNR U-S
>
> Concur. Now the font descriptions for the "U" foundry (URW) appear.
>
> $ (cd ~/groff-HEAD/share/groff/1.24.0/font/devpdf && echo * | fold -sw 72)
> AB ABI AI AR BMB BMBI BMI BMR CB CBI CI CR CSH CSS CTH CTS DESC EURO
> Foundry HB HBI HI HNB HNBI HNI HNR HR JPG JPM KOG KOM NB NBI NI NR PB
> PBI PI PR S SS TB TBI TI TR U-AB U-ABI U-AI U-AR U-BMB U-BMBI U-BMI
> U-BMR U-CB U-CBI U-CI U-CR U-HB U-HBI U-HI U-HNB U-HNBI U-HNI U-HNR
> U-HR U-NB U-NBI U-NI U-NR U-PB U-PBI U-PI U-PR U-S U-TB U-TBI U-TI U-TR
> U-ZCMI U-ZD ZCMI ZD download enc map symbolsl.afm symbolsl.pfb
>
> > [derij@pip build (master)]$ ls contrib/mom/examples/
> > copyright-chapter.pdf letter.pdf mon_premier_doc.pdf slide-demo.pdf
> > copyright-default.pdf mom-pdf.pdf sample_docs.pdf typesetting.pdf
> >
> > All present.
>
> Concur. They're _installed_ too, with their sources.
>
> $ (cd ~/groff-HEAD/share/doc/groff-1.24.0/examples/mom && echo * | fold -sw
> 72) README-fr.txt README.txt copyright-chapter.mom copyright-chapter.pdf
> copyright-default.mom copyright-default.pdf elvis_syntax
> elvis_syntax.new letter.mom letter.pdf mom-pdf.mom mom-pdf.pdf mom.vim
> mon_premier_doc.mom mon_premier_doc.pdf penguin.pdf penguin.ps
> sample_docs.mom sample_docs.pdf slide-demo.mom slide-demo.pdf
> typesetting.mom typesetting.pdf
>
> > Notes
> > =====
> > Each run had a distclean
>
> I should have paid closer attention to that.
>
> > and a bootstrap.
>
> Unnecessary. The distribution archive ships gnulib. If you're a
> distributor, like Debian, you may want to do this, or if you fear groff
> will perpetrate an xz attack on you. I didn't bother; the distribution
> archive I used was generated and signed by me on the machine I tested
> on. If this machine is compromised, I'm already long f***ed.
>
> > All out of tree builds.
>
> All in-tree for me.
>
> > No installs tested
>
> I _inspected_ the installation, but didn't run the test suite at any
> point because none of the issues you raised seem to have anything to do
> with runtime behavior, within the tree or out of it. Every frustration
> is a build-time matter.
>
> > Hopefully Branden can duplicate the findings above.
>
> Not completely, but enough to give me several things to work on.
>
> > If so, and Peter is happy for a slightly degraded typesetting.pdf if N
> > and P families are not available, then all groff pdf documentation can
> > be produced no matter the state of finding the fonts, so long as -P-e
> > is not used. This is the KISS solution. If it is desired to keep the
> > embedded option
>
> Yes; I want documents that represent what groff can do.
>
> > then -P-e can be used except when configure outputs BOTH the
> > ghostscript and URW font warnings.
>
> Not at all how I would describe the functional coupling here, but I
> think I see what you're saying.
>
> > Interestingly if you don't use --without-urw-fonts the only difference
> > is the suppression of a number of (now) non-fatal warnings when in
> > basic mode. I wonder if this flag could be turned on automatically if
> > BOTH the ghostscript and URW font warnings are output by configure, to
> > save users having to inform configure a status it is already aware of.
Given configure can output a message about ghostscript missing (the G message)
and no urw fonts (the U message) this table describes the 3 gropdf modes:-
Mode G U
basic* y y
inter n y
full - n
Notes:-
Perhaps counter-intuitively 'y' means you have not got (i.e. it means you've
got the message about not having) the thing!
*basic: in this situation you need the flags which --without-urw-fonts
currently sets which stops warnings from BuildFoundries (-W ?) and stops
requesting font embedding (-P-e). This should mean all modes will be warn free
("As free as the wind blows") apart from the famous six (we are one better
than Enid Blyton)! This takes the onus of using --without-urw-fonts from the
user.
> I don't quite grasp what you're asking for here, but I think my list of
> action items for myself below might get us there.
>
> One aspect of this lengthy exploration did satisfy me: the only time I
> got error diagnostics from the build was when something really was
> screwed up (my failure to "distclean", above), and the only warnings I
> saw were the legit ones about the 6 missing glyphs in groff_char(7).
> (At some point, it seems gnulib and GCC reached a truce over the
> former's use of vasnprintf().)
>
> So, action items for me:
>
> A. Report a summary line for the Ghostscript implementation, since its
> name is variable (usually "gs", but can be something else).
This may be why you did not get a clean "basic" run (or no distclean before
hiding ghostscript and urw-fonts), BuildFoundries uses "@GHOSTSCRIPT@ -h", ie
the name of the ghostscript provided by configure.
> B. Report a summary line for ps2ps, which only grohtml uses.
>
> C. Report a summary line for the configured gropdf service level,
> something like
>
> gropdf service level : basic (worst of 3)
> or
> gropdf service level : intermediate (middle of 3)
> or
> gropdf service level : full (best of 3)
>
> D. Ditch three lengthy configuration-time notices.[2]
>
> E. Make "make install" install all gropdf-generated PDFs even at
> gropdf's basic service level.
>
> Regards,
> Branden
>
Cheers
Deri
> [1] https://lists.gnu.org/archive/html/groff/2026-01/msg00171.html
>
> [2] These 3 guys:
>
> configure: No Ghostscript program was found in $PATH.
> ...
> configure: The programs 'gs' and 'ps2ps' were not found in $PATH.
> ...
> configure: 'gropdf' will have reduced function.