preconv test failure on Darwin with nixpkgs 25.11 (was: groff 1.24.0.rc4 testing)
"G. Branden Robinson" <[email protected]>
| Newsgroups | gmane.comp.printing.groff.general |
|---|---|
| Message-ID | <20260221195301.56bgoeowbl5vgokc@illithid> |
[please don't email info-groff@gnu with feedback; it's not a big
problem, but it makes work for the list moderators]
At 2026-02-21T19:39:14+0100, Alexis (surryhill) wrote:
> testing this pre-release on Darwin with nixpkgs 25.11 was successfull
> and all tests passed for builds with and without URW fonts.
Thanks a lot for evaluating this platform. I have nothing like it.
> When building with uchardet support the following test failed:
> src/preproc/preconv/tests/smoke-test.sh
>
> Here are the related snippets from the build log (also attached):
>
> testing uchardet detection on pipe (expect fallback to -D)
> testing fallback to locale setting in environment
> ...FAILED
> FAIL src/preproc/preconv/tests/smoke-test.sh (exit status: 1)
[snip; I'll get to this test failure below]
> Hopefully this is helpful.
It is! Thank you.
Some miscellaneous comments on your build log--largely notes to myself.
[...]
> CXX src/libs/libgroff/libgroff_a-nametoindex.o
> [1msrc/libs/libgroff/matherr.c:29:5: [0m[0;1;35mwarning: [0m[1ma function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype][0m
> 29 | [0;34mint[0m matherr(exc)[0m
> | [0;1;32m ^
> [0m1 warning generated.
Hmmm, I need to put that on the Lint hit list for early groff 1.25.
We can either fix the declaration...
$ apropos matherr
matherr (3) - SVID math library exception handling
...or maybe delegate to gnulib.
See <https://savannah.gnu.org/bugs/?66518>.
> BuildFoundries: warning: line 34: cannot read grops font description 'AB' for default foundry
> BuildFoundries: warning: line 35: cannot read grops font description 'ABI' for default foundry
> BuildFoundries: warning: line 36: cannot read grops font description 'AI' for default foundry
> BuildFoundries: warning: line 37: cannot read grops font description 'AR' for default foundry
> BuildFoundries: warning: line 38: cannot read grops font description 'BMB' for default foundry
> BuildFoundries: warning: line 39: cannot read grops font description 'BMBI' for default foundry
> BuildFoundries: warning: line 40: cannot read grops font description 'BMI' for default foundry
> BuildFoundries: warning: line 41: cannot read grops font description 'BMR' for default foundry
> BuildFoundries: notice: copied grops font description CB for gropdf
> BuildFoundries: notice: copied grops font description CBI for gropdf
> BuildFoundries: notice: copied grops font description CI for gropdf
> BuildFoundries: notice: copied grops font description CR for gropdf
> BuildFoundries: notice: copied grops font description HB for gropdf
> BuildFoundries: notice: copied grops font description HBI for gropdf
> BuildFoundries: notice: copied grops font description HI for gropdf
> BuildFoundries: warning: line 49: cannot read grops font description 'HNB' for default foundry
> BuildFoundries: warning: line 50: cannot read grops font description 'HNBI' for default foundry
> BuildFoundries: warning: line 51: cannot read grops font description 'HNI' for default foundry
> BuildFoundries: warning: line 52: cannot read grops font description 'HNR' for default foundry
> BuildFoundries: notice: copied grops font description HR for gropdf
> BuildFoundries: warning: line 54: cannot read grops font description 'NB' for default foundry
> BuildFoundries: warning: line 55: cannot read grops font description 'NBI' for default foundry
> BuildFoundries: warning: line 56: cannot read grops font description 'NI' for default foundry
> BuildFoundries: warning: line 57: cannot read grops font description 'NR' for default foundry
> BuildFoundries: warning: line 58: cannot read grops font description 'PB' for default foundry
> BuildFoundries: warning: line 59: cannot read grops font description 'PBI' for default foundry
> BuildFoundries: warning: line 60: cannot read grops font description 'PI' for default foundry
> BuildFoundries: warning: line 61: cannot read grops font description 'PR' for default foundry
> BuildFoundries: notice: copied grops font description S for gropdf
> BuildFoundries: notice: copied grops font description TB for gropdf
> BuildFoundries: notice: copied grops font description TBI for gropdf
> BuildFoundries: notice: copied grops font description TI for gropdf
> BuildFoundries: notice: copied grops font description TR for gropdf
> BuildFoundries: warning: line 67: cannot read grops font description 'ZCMI' for default foundry
> BuildFoundries: notice: copied grops font description ZD for gropdf
> BuildFoundries: notice: copied grops font description EURO for gropdf
Looks like we should use a consistent quotation practice here.
As noted by Deri and me recently, under "Configuration A",[1] these
warnings are expected when gropdf's feature service level is "basic".
gropdf(1):
Feature service levels and URW font support
...
• Basic service results when gropdf cannot locate all 35 fonts of
the PostScript Level 2 standard. Only the base 14 fonts of the
PDF standard are available, and only in the sense that the
formatter can use their metrics (copied from grops font
descriptions as described above). Use of the -e option to embed
fonts in the generated PDF results in an error.
> troff: backtrace: 'an.tmac':832: macro 'I'
> troff: backtrace: file 'src/utils/afmtodit/afmtodit.1':230
> troff:src/utils/afmtodit/afmtodit.1:230: warning [page 1, line 129]: cannot adjust line; underset by 1n
> troff: backtrace: file 'src/preproc/eqn/eqn.1':175
> troff:src/preproc/eqn/eqn.1:175: warning [page 1, line 664]: cannot adjust line; underset by 3n
> troff: backtrace: file 'src/preproc/eqn/eqn.1':178
> troff:src/preproc/eqn/eqn.1:178: warning [page 1, line 666]: cannot adjust line; underset by 1n
These warnings happen because groff's installation directory gets
interpolated into man page text, and under the nixpkgs regime, these
directory names are what Mike Myers would call "frickin' 'uge".
...or so I infer from your configuration summary.
GNU roff version 1.24.0.rc4 configuration summary
----------------------------------------------------------------------
installation directory prefix : /nix/store/77hifs4jfmpsf4w6bjdhgg8dd9am6mhm-groff-1.24.0.rc4
These "underset" warnings can be disregarded; just wanted to mention it.
> troff: backtrace: file 'man/groff_char.7':1060
> troff:man/groff_char.7:1060: warning: special character '.j' not defined
> troff: backtrace: file 'man/groff_char.7':1466
> troff:man/groff_char.7:1466: warning: special character 'vA' not defined
> troff: backtrace: file 'man/groff_char.7':1596
> troff:man/groff_char.7:1596: warning: special character 'bs' not defined
> troff: backtrace: file 'man/groff_char.7':1769
> troff:man/groff_char.7:1769: warning: special character '-+' not defined
> troff: backtrace: file 'man/groff_char.7':1818
> troff:man/groff_char.7:1818: warning: special character 'coproduct' not defined
> troff: backtrace: file 'man/groff_char.7':1918
> troff:man/groff_char.7:1918: warning: special character '+e' not defined
If some kind soul contributes a small font to _groff_, they'd fix
https://savannah.gnu.org/bugs/?62932
...and these warnings.
> troff: backtrace: file 'tmac/groff_mdoc.7':5331
> troff:tmac/groff_mdoc.7:5331: warning [page 318, 2.1i]: cannot adjust line; underset by 0.717639i
Same issue as above, but for a typesetter rather than a terminal.
> ===========================================
> GNU roff 1.24.0.rc4: ./test-suite.log
> ===========================================
>
> # TOTAL: 313
> # PASS: 295
> # SKIP: 13
> # XFAIL: 4
> # FAIL: 1
> # XPASS: 0
> # ERROR: 0
That's more skippin' than I'm used to seeing, but I'm not alarmed. In
my working copy I have some changes to try and ensure that in _every_
case, a skipped test discloses the precise reason it's doing so. I
didn't notice any omissions thereof in your log, though, which is good.
[rearranging]
> XFAIL: src/roff/groff/tests/current-language-and-environment-in-sync.sh
> =======================================================================
>
> 1 en=en
> 2 (empty)=en
> 3 fr=fr
> 4 en=fr
> 5 fr=fr
> 6 (empty)=fr
> 7 de=de
> 8 (empty)=de
> 9 de=de
> A fr=de
> B en=de
> C (empty)=de
> D fr=de
> E (empty)=de
> F en=en
> verifying that language code on startup is 'en'
> verifying that language code in new environment is empty (1)
> ...FAILED
> verifying that language code can be set to 'fr'
> verifying that language code reverts on environment pop (1)
> ...FAILED
> verifying that language code restored on environment push (1)
> verifying that language code in new environment is empty (2)
> ...FAILED
> verifying that language code can be set to 'de'
> verifying that language code in new environment is empty (3)
> ...FAILED
> verifying that language code restored on environment pop (2)
> verifying that language code restored on environment pop (3)
> ...FAILED
> verifying that language code restored on environment pop (4)
> ...FAILED
> verifying that language code in new environment is empty (4)
> ...FAILED
> verifying that `evc` request copies language code
> ...FAILED
> verifying that empty language code restored on environment push
> ...FAILED
> verifying that assertion holds when using `hla` request
> XFAIL src/roff/groff/tests/current-language-and-environment-in-sync.sh (exit status: 1)
This horror show will be fixed when I can get Peter's buy-in to one of
my GNU troff language reforms. :D
https://savannah.gnu.org/bugs/?66387
> FAIL: src/preproc/preconv/tests/smoke-test.sh
> =============================================
>
> testing -e flag override of BOM detection
> testing detection of UTF-32BE BOM
> testing detection of UTF-32LE BOM
> testing detection of UTF-16BE BOM
> testing detection of UTF-16LE BOM
> testing detection of UTF-8 BOM
> testing detection of Emacs coding tag in piped input
> testing uchardet detection on pipe (expect fallback to -D)
> testing fallback to locale setting in environment
> ...FAILED
> FAIL src/preproc/preconv/tests/smoke-test.sh (exit status: 1)
Okay, let me have a look at what that's doing.
[time passes]
This looks like a legitimate failure; it's a case of me not knowing what
to do.
Here's the code:
---snip---
# Fall back to the locale.
#
# On glibc systems, the 'C' locale uses "ANSI_X3.4-1968" for the
# character set, but preconv assumes Latin-1 instead of US-ASCII.
#
# On non-glibc systems, who knows? But at least some use UTF-8.
if [ -n "$has_glibc" ]
then
charset=ISO-8859-1
else
charset=UTF-8
fi
echo "testing fallback to locale setting in environment" >&2
printf 'Eat at the caf\351.\n' \
| "$preconv" -d 2>&1 > /dev/null \
| grep -q "encoding used: '$charset'" || wail
---end snip---
Earlier in your log, when "configure" is running, we have this:
checking whether we are using the GNU C Library >= 2.1 or uClibc... no
Okay, please run that printf(1) command in your build environment and
tell me what you get. The script `export LC_ALL=C`'s earlier, so you
should do similar.
$ LC_CALL=C printf 'Eat at the caf\351.\n'
I don't know what to expect from your system's libc. I'd like to.
What _is_ your libc vendor, by the way? Is there an idiomatic way to
test for its identity?
Regards,
Branden
[1] https://lists.gnu.org/archive/html/groff/2026-02/msg00036.html
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmmaDRYACgkQ0Z6cfXEm bc7dJw/+Jafd2sz+mYTCj3jDRNNQ4kDlf/6nYB/UTRmvPgNV3idMZbHJ82Lv4xHJ Fpr3nYvLD5sVuhhcBkfcolZgOBI8T8YO46xGrkInClskWTy0i7Vq/IDUJLxDPM0p xBLMM4g496mScPj/DJy2o3E7ycoz67wlWvstjQ1TGvlJdJv4roHnY6EQggm8M0dW wRXm8wD3CTj2dr98A+yykPct6Ri2WjlMPurd1Gno5iatcyyDqpStQ3kTQjm6r6Jp MVMgjBVh5uSmx8FwXGJctOvRXCSc+PaUL49vpZVUmlL/ZrexJn3eHKnPB0ethZh/ Aq/fmgm1C0U+ZS5aOqdxbf3AEVCBQH4VJ66iZdbzTNlwAX2aSokUj8Gn8R2AGtkU w7Ykj14qOb3MZczzlAh1o9arKuK1xYqCTpgaghgdWr3O7J9xazMbnVnd2TcEuh77 2h8UmjABXibC8LJJK3AyKRr4DeTu5ADO/ke9X1TTMKJpjCaktyjAqBSlvwuL/idF L1jqSCPvLAxtgBl5PO5f0DmH/4hX45k+ZqhRWSiFiX3OVqkpfOafQI5iPTWE5iJ/ drN8Xy/H51yu0ShAPgjgpa5xSFoSlAE0A9uOUD/8zuiKpoRAxoB6Q/fyH3lSAYw6 0bWnV/b+CR21cDQlF92FQgtpCPBwWPxh8PkzGkkYbLjYKJvajv4= =CS2g -----END PGP SIGNATURE-----