Re: groff 1.25.0.rc1 testing

"G. Branden Robinson" <[email protected]> Tue, 21 Jul 2026 00:35:36 -0500
Newsgroups gmane.comp.printing.groff.general
Message-ID <20260721053536.ggoa2vux7zkkcjm5@illithid>
--spi6pbbasunom32c
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Subject: Re: groff 1.25.0.rc1 testing
MIME-Version: 1.0

Hi Phong,

At 2026-07-21T14:07:10+0900, Nguy=E1=BB=85n Gia Phong wrote:
> On 2026-07-19 at 10:08-05:00, G. Branden Robinson wrote:
> > At 2026-07-19T10:38:35+0200, Alexis (surryhill) wrote:
> > > Testing this rc on macOS with nixpkgs I noticed the following
> > > changes:
> > >=20
> > > * The build fails with:
> > >=20
> > >   /nix/store/5vmd3cqj6skjajg0yj9jl8dsddwp0700-bash-5.3p9/bin/bash: \
> > >     line 35: ./soelim: No such file or directory
> > [...]
> > >
> > >         GEN      doc/line-layout.eps
> > >     make: *** [Makefile:20231: doc/line-layout.eps] Error 127
> >
> > Thanks for the report.  I've fixed both of these and pushed the
> > fixes to Git.
>=20
> Thanks got the quick fixes.  The build on Guix is facing
> the same issues, could the rc2 tarball be published
> so the build status can be confirmed?

There is no rc2 tarball; I haven't published one.  If the issues Alexis
found are the only ones that came up, my next distribution archive
release will be 1.25.0 final.

> Alternatively, I'm trying to switch to building from Git (we are
> trying to avoid artefacts like generated configure where possible) and
> without the .git directory (which is not reproducible) configure is
> failing to find the version:

Right.  You now need to specify `--enable-maintainer-mode` to
"configure" when building from Git.

In my next push, this will be clearer.  Here's an exhibit from my
working copy.

commit c992a09f15da28759ee070670bc04983b403012f
Author:     G. Branden Robinson <[email protected]>
AuthorDate: Mon Jul 20 21:50:36 2026 -0500
Commit:     G. Branden Robinson <[email protected]>
CommitDate: Mon Jul 20 21:50:36 2026 -0500

    INSTALL.REPO: Document `--enable-maintainer-mode`.

diff --git a/INSTALL.REPO b/INSTALL.REPO
index 8f29994ec..3b6aa46ea 100644
--- a/INSTALL.REPO
+++ b/INSTALL.REPO
@@ -83,7 +83,7 @@ You can now run the "configure" script.  It produces the =
"config.status"
 script, which generates the Makefile.  Then run "make" to build the
 groff project.  You can perform these actions from the source tree.

-    $ ./configure
+    $ ./configure --enable-maintainer-mode
     $ make # run with -j option if desired

 You can alternatively build groff outside of its source tree, which is
@@ -92,7 +92,7 @@ undertake development.

     $ mkdir build
     $ cd build
-    $ ../configure
+    $ ../configure --enable-maintainer-mode
     $ make # run with -j option if desired

 A separate build tree need not be a subdirectory of the source.

>     configure flags: ("CONFIG_SHELL=3D.../bin/bash"
>                       "SHELL=3D.../bin/bash"
>                       "--prefix=3D...groff-1.25.0.rc2"
>                       "--enable-fast-install"
>                       "--docdir=3D   groff-1.25.0.rc2-doc/share/doc/groff"
>                       "--build=3Dx86_64-unknown-linux-gnu")
>     configure: WARNING: unrecognized options: --enable-fast-install
>     checking that groff version string has valid format...  invalid
>     configure: groff's version string must start with three decimal
>     integers separated by dots.  "" does not match.
>=20
> How is this version string constructed?

README:
    This is the "groff" document formatting system, a reimplementation
    and extension of the AT&T "troff" typesetting system for Unix
    operating systems.  The version number is given in the file
    ".tarball-version" if you are building from a distribution archive;
    otherwise, building from its Git repository stores it in the file
    ".version".

If you're doing an out-of-tree build, then the presence of ".version" in
your Git working copy can confuse a human because its contents can get
very stale, but it doesn't confuse the build system--I'll explain below.
You can delete it and start an out-of-tree build anew.

The rules for generating these files are as follows.

$ nl -ba Makefile.am | sed -n 872,877p
   872  # Version files - see script "build-aux/git-version-gen".
   873  .version:
   874          $(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
   875  dist-hook:
   876          $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
   877

So why doesn't a stale, or even absent, ".version" file break a groff
build?

As shown above, anything that, via a make(1) target rule, declares
".version" as a prerequisite causes it to be created.

But "configure" runs _before_ make(1), so how does the configure script
determine the version number?

Via the Autoconf macro `GROFF_MAKE_SHORT_VERSION`.

$ nl -ba m4/groff.m4 | sed -n 21,31p
    21  # Construct a short form of the groff version string.
    22  #
    23  # SHORT_VERSION contains the MAJOR_VERSION, MINOR_VERSION, and a po=
rtion
    24  # of the REVISION, separated by dots.  Only the part of REVISION be=
fore
    25  # the first '.' is used.  For example, if REVISION is
    26  # '3.real.434-5aafd', then SHORT_VERSION is 'x.yy.3', where x and y=
y are
    27  # MAJOR_VERSION and MINOR_VERSION, respectively.
    28  AC_DEFUN([GROFF_MAKE_SHORT_VERSION], [
    29    AC_SUBST([SHORT_VERSION],
    30             m4_bregexp(AC_PACKAGE_VERSION,[^\(\w+\.\w+\.\w+\).*$],[\=
1]))
    31  ])

Does this help?

If anything about this stuff is still murky, we might have to call upon
Bertrand Garrigues; he's the real authority on it.  ;-)

Regards,
Branden

--spi6pbbasunom32c
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmpfBR8ACgkQ0Z6cfXEm
bc4LVhAAhDBzTlS4o5/LgDFZT2n2SFhemfcm07UcQBAhANrYdKkSV/CJlDeBVP7G
fLG7elDuNK3jZW3CrG6Ty/ErUF6mcxAN/a0Hi9qKKEt+CUZ6RAqxBW2kbJx2qHvb
ZWT8C8WrxJfXZwOXqJbPFDvw7VUjkurvuPkxLsD6B5IltHgKM7jw9ZfxXWKfg+JJ
kGF1A7CEPmdRlSz4K655+/FBFZfQhAbBQlpH4Y5wTwJcoaNeP7hy8BJR/+HNud+2
pEwFdqziz4c24tY4NUih8Jh9rZZ49g8JWmhSkYw++MOJ7llonXF133CZB43dFy6k
JSYrXwcN95cR5IIyI1HFEg6desk+uWN5q03Ju1NBV/Ho5f8O8+q8cqjE0/qunFLV
4Y8hyooh1M4rqMCyUcxxdd/nRhNT6Gcf6H1EnTLqQmW5+gwxJs7z7aT60Wlh6246
DYwg9Oqu/dwi1eVJPTutxFmOhIas0wlmTh6eT23M0cjmP5wZYl/zWC7z6psvRuJ6
5F184meWPsIt1J11D9avPrTH+9/K7us3DkkPij5+66vEhWXEZk9WAkco5pul/A/O
Qii1khmJXOx64J7Hskv+CpJubgBDKY1z8lFlKJZgROYfFVL0xmO85Y1Y8q2/oY42
8rxc77uJ7MFDu/BYIaUfdQDAE4rjcRSdg7mA6eonFsxzpvlAyOE=
=ylSH
-----END PGP SIGNATURE-----

--spi6pbbasunom32c--