Re: groff 1.25.0.rc2 on Solaris 11.4
"G. Branden Robinson" <[email protected]>
| Newsgroups | gmane.comp.printing.groff.general |
|---|---|
| Message-ID | <20260806150458.jn5mnljtryh2wxq2@illithid> |
Hi Bruno,
At 2026-08-03T20:14:24+0200, Bruno Haible wrote:
> On Solaris 11.4, 203 tests fail.
>
> All of them because they use 'grep' and the Solaris /usr/bin/grep is
> old. But there is also /usr/bin/ggrep, which is GNU grep version 3.1.
> In fact, config.status contains two AC_SUBSTed variables:
> grep -> "/usr/bin/ggrep"
> egrep -> "/usr/bin/ggrep -E"
> But the test suite appears to not use these variables.
Right. I have not been in the habit of generating test scripts at
configuration time from '*.in' files that we ship.
The better part of a decade ago when I started establishing patterns for
myself in writing test scripts for groff, I underestimated just how
poor Solaris's POSIX conformance was/is.
> If I place a symlink <somedir>/grep -> /usr/bin/ggrep in a directory
> in $PATH, the build succeeds with no test failures.
It's a big lift to migrate 200+ test scripts to configure-time
generation process--obviously we'll want to do it in a mostly automated
manner--so I propose to document this issue in the release notes, where
we already caution the reader about Solaris.
Caveats
=======
* GNU tools, or otherwise POSIX-conforming ones, are generally required
to build on Solaris 10 or 11. See the "PROBLEMS" file in the
distribution archive.
* Solaris 10 has known problems with automated tests; see the
"PROBLEMS" file in the distribution archive.
The PROBLEMS file says this:
----------------------------------------------------------------------
* I get a make(1) failure involving grep and the groff_man.7.man.in file
on Solaris 11.
Solaris make(1) has a bug easily exhibited by the following Makefile.
all:
! false
Use GNU make instead; it may be available in /opt/csw/bin/gmake.
----------------------------------------------------------------------
* Tests fail when I run "make check" on Solaris 10 or 11.
The test suite expects a POSIX-conforming shell and utilities. Solaris
10 does not offer these in the default $PATH. We try to use features
standardized no later than POSIX Issue 4 (1994). Unfortunately even
that is too recent for some implementations. Solaris 11 has a (mostly)
conforming shell. It may help to ensure that "/usr/xpg6/bin" and
"/usr/xpg4/bin" precede "/usr/bin" in the $PATH when building groff.
For Solaris 10, it is necessary to modify the shell-based test scripts
in place to use a conforming shell. Here is an example.
$ gsed -i -e '1s@#!/bin/sh@#!/usr/xpg4/bin/sh@' \
`find . -name '*.sh' | egrep '/(examples|tests)/'`
$ gsed -i -e '1s@#!/bin/sh@#!/usr/xpg4/bin/sh@' \
`find . -name '*.sh.in' | egrep '/(examples|tests)/'`
$ PATH=/usr/xpg4/bin:$PATH gmake check
[POSIX.1-2024 has withdrawn specification of egrep(1) but Solaris 10
doesn't support `grep -E`. --GBR in 2026]
----------------------------------------------------------------------
The issue you've reported sounds like it could feature in an expansion
of the last item above.
I have access to only one Solaris 11 system, that being the FSF Europe's
compiler farm. Not sure why I didn't notice before. Maybe that system
takes steps to protect the user from Solaris 11's crappy grep.
Or maybe my tip about the $PATH makes the difference?
Regards,
Branden
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmp0opIACgkQ0Z6cfXEm bc70vRAAlzXkZ1pKS1w2VrcYeRbkCTZS9nB9oKz45dE9/akl3BFxXxwHGnhZk6sl rSQFXcIE9d0ZjgNMXUjoqCGPAVPLUHTB+5pR8XMeotDGD88cUguiO6fh4Uojm+Y6 lcA/VcEmo4N0aC+ISSNLaw2LCEQtPe0xwmz3yTdhH6a4cRHt2zgHXJZ/QH9icLL3 ARKoVRj9zL/D+3xt+uKU7wEiQaV5CczOlC5HKDV/qD4c4F44Pka/Qwp2Fz38QzzY D2M9vTkOc9j71FqxfLYeBg4uWNQiSJetlWXrQPiqhxS7suNI00w+Qnya2KFzwUDR fMOR6kSG5sSz3eMyPG/prwJg3eYEIzF63jvKr4+5cW1+zocCNTBSMTsQClvo9ba3 EH8M8zLUx0Ld6fF8GvG02F9tO1hecUeweP8KSsdAw4oAIyPJ3xyNpdniuH6ufn8e VhiXOORzcNsELilzhTwBkqkT0nkmq6pQxvI3gbdBrisK2HZoid+gP2KQgvgABjWR ulnyeitZm/4tnxvrWv1GiwgSsgahatG9GdUu7bR1B4tM0ApUF2Jf+ImNmpmZuB89 B25GE0plX/fGd9E4ToYDidGpkBCnPur/CQBn013wvkXhgAG6qLF+Uh49lbsf4c/K 7a5NpyHaO4jMWFSoGL1e4/muzNDO+35JniFPws4PobYmXrXwYDA= =T8q6 -----END PGP SIGNATURE-----