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.

Attachment: signature.asc
Description: PGP signature

              • ... Deri via GNU roff typesetting system discussion
              • ... Peter Schaffter
              • ... Deri via GNU roff typesetting system discussion
              • ... G. Branden Robinson
              • ... Peter Schaffter
              • ... G. Branden Robinson
              • ... Peter Schaffter
              • ... Deri via GNU roff typesetting system discussion
              • ... G. Branden Robinson
              • ... Deri via GNU roff typesetting system discussion
              • ... G. Branden Robinson
              • ... Peter Schaffter
  • Re: proposed "headlin... Peter Schaffter

Reply via email to