nmh-workers
[Top] [All Lists]

Re: new release?

2022-04-20 07:14:14
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 <nobody@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.

<Prev in Thread] Current Thread [Next in Thread>