Hi David, A bit of quick feedback on Debian 11...
MACHINES mentions: gdbm-devel, db4-devel or libdb-devel/libdb-dev (only needed for slocal(1)) There's no db4-devel. A libdb5.3-dev exists and is installed but it doesn't satisfy configure's search. libdb-dev is installed but it doesn't satisfy configure's search. checking for dbm in ndbm.h... no checking for dbm in db.h and db... no checking for dbm in ndbm.h and db... no checking for dbm in ndbm.h and db1... no checking for dbm in ndbm.h and ndbm... no checking for dbm in db1/ndbm.h and db1... no checking for dbm in gdbm/ndbm.h and gdbm... no checking for dbm in gdbm/ndbm.h and gdbm_compat -lgdbm... no checking for dbm in ndbm.h and gdbm... no checking for dbm in ndbm.h and gdbm_compat -lgdbm... no checking for dbm in gdbm-ndbm.h and gdbm_compat... no configure: error: could not find a working ndbm library/header combination see nmh MACHINES file for build dependences There's no gdbm-devel, but there is libgdbm-dev and installing that still didn't help configure; I got the same output as above. db.h is present, but the other test above still fails, presumably correctly because it's changed too much. libdb5.3-dev: /usr/include/db.h Ah, ndbm.h is in libgdbm-compat-dev: /usr/include/gdbm-ndbm.h libgdbm-compat-dev: /usr/include/ndbm.h Installing libgdbm-compat-dev for ndbm.h works, i.e. ./build_nmh installing to /tmp and leaving the rest to configure ends All 99 tests passed (19 tests were not run) A separate ‘make check’ shows lots of tests ‘skipped: no suitable locale available’. $ locale -a C C.UTF-8 en_GB.utf8 POSIX $ $ git grep require_locale test/common.sh.in:require_locale () test/dist/test-dist:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/format/test-ap:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhbuild/test-attach:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhbuild/test-cte:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhbuild/test-ext-params:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhbuild/test-header-encode:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhbuild/test-utf8-body:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhfixmsg/test-mhfixmsg:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhical/test-mhical:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhl/test-format:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhl/test-rfc6532:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhlist/test-ext-params:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhshow/test-charset:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/mhshow/test-textcharset:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/pick/test-pick:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/post/test-rfc6531:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/repl/test-convert:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 test/scan/test-scan-multibyte:require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 $ I see require_locale treats its argument as a grep(1) regexp but the dots aren't escaped. # Skip test if none of the offered locales are supported. # As side effect, use the first locale that is found. Note that # some platforms allow, by way of example, en_US.UTF-8 to be used # even though en_US.UTF8 is listed by locale -a. But by setting # LC_ALL here, we don't rely on that. require_locale () { for locale in "$@"; do if locale -a | grep -i "$locale" >/dev/null; then LC_ALL="$locale"; export LC_ALL return fi done test_skip "no suitable locale available" } Perhaps, if the tests would still work, it should accept regexps, filter ‘locale -a’ output with each in turn, as it does now, but sort the output in the C locale and use the first. Then the calls could be require_locale '^en_..\.[Uu][Tt][Ff]-*8$' As a quick test of a non-US locale, altering require_locale() to require_locale () { +LC_ALL=en_GB.utf8; export LC_ALL +return + got most locale-using tests to pass. test/mhbuild/test-utf8-body still wasn't happy because it hard-codes ‘en_US.UTF-8’. Using LC_ALL set by require_locale() instead had the test pass. diff --git a/test/mhbuild/test-utf8-body b/test/mhbuild/test-utf8-body index e3903ae6..2022e98f 100755 --- a/test/mhbuild/test-utf8-body +++ b/test/mhbuild/test-utf8-body @@ -174,6 +174,7 @@ Nmh-Attach: $MH_TEST_DIR/attachment.txt ¡Ay, caramba! EOF +found_locale=$LC_ALL LC_ALL="C"; export LC_ALL set +e @@ -191,7 +192,7 @@ check "$expected" "$actual" # previous test, but with locale profile entry start_test '8-bit body with C locale with locale profile entry' -printf 'locale: en_US.UTF-8\n' >> "${MH}" +printf 'locale: %s\n' "$found_locale" >>"$MH" cat > "${testname}.expected" <<EOF From: Mr Nobody <nob...@example.com> Installing package valgrind got another test to pass. Installing packages lynx and links didn't help ‘skipping html checks because no text browser was found’. I realised they're needed before build_nmh runs. Re-running build_nmh then allowed those browser-needing tests to pass. I've now reached 1 of 118 tests failed due to first named test failure: display of multiple vevent requests in single vcalendar FAIL: test/mhical/test-mhical which has failed in a similar manner to others' reports. -- Cheers, Ralph.