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.
...
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"!
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
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
> Currently no pdf documents are built,
Cannot reproduce. For me, almost all _do_ get _built_, but see below.
$ 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.]
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.
(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.)
> [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-chapter.pdf
/home/branden/groff-HEAD/share/doc/groff-1.24.0/examples/mom/copyright-default.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_doc.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.pdf
/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.
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).
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
[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.
signature.asc
Description: PGP signature
