Am 14.04.26 um 07:42 schrieb Kevin J. McCarthy:
On Tue, Apr 14, 2026 at 08:07:10AM +0800, Kevin J. McCarthy wrote:
Here's what I plan on doing:
1. Fix up the trixie docker image to include autopoint. Just for
reference, I store these in the "docker-images" repository on gitlab:
https://gitlab.com/muttmua/docker-images
2. Add "AM_GNU_GETTEXT_VERSION(0.21)" to configure.ac
3. Remove and gitignore files that are reported as "Copy file" by
`gettextize -f --dry-run --no-changelog`
4. Change prepare script to "autoreconf -isvf". I like the idea of
the symlinks, since it makes it more obvious they are external files.
Any comments? Did I miss a step?
This is going well, except for new problems with 'make distcheck'.
I'm not sure whether it's due to using symlinks now, or because of
newer files installed by autoreconf -f, but the distcheck build is now
taking place in deeper subdirectories that are partitioned by source
and _build and _install with permissions set.
The problem is that various 'make check' targets are failing because
files don't exist inside the 'make distcheck' process. For example,
doc/Makefile.am validate fails because manual.xml is not found (since
it's an intermediate generated file that isn't included in the
tarball). I tried prepending with $(srcdir) and $(builddir) but
neither worked. So eventually I just added an "if test -f
./manual.xml; then" around it.
I've seen a few lingering that I try to reproduce but where I saw
fallbacks through lynx, elinks, ... which may have similar situations to
those I've fixed in shellcheck and tabcheck recently, but I didn't drill
down to see if those were just artifacts and it failed over to a tool it
had, or if it was because the $(srcdir)/ prefixes were missing from the
input files.
But then check_sec.sh failed due to permission errors. I changed that
to pass --tmpdir to mktemp. And now, shellcheck is failing because
"gen_defs" doesn't exist, which we "echo" in additionally.
I think shellcheck and tabcheck are fixed and I saw you use a different
option for mktemp to please OpenBSD.
So I'm starting to wonder if these all should really be attached to the
'make check' target? Any ideas?
That depends a bit on how thorough you want "make check" to be. I
haven't bothered to strip that down or consider slow vs. fast tests. I
know some projects do, for instance, e2fsprogs by default skips very
slow self-tests.
Other than that I find a complete self-test suite AND the ability to
build with different options and/or compilers from the same source tree
very helpful in development (especially before you put something onto a
CI builder), so I'd fix.
To lay that "local use case" out, I might:
autoreconf -svif
mkdir _build-gnu23 _build-clang-c23 _build-gcc-default _build-asan
(cd _build-gnu23 && ../configure CFLAGS="-std=gnu23 -pedantic -Og" &&
make check)
(cd _build-clang-c23 && ../configure CC=clang CFLAGS="-std=gnu23
-pedantic -O2" && make check)
(cd _build-gcc-default && ../configure CC=gcc && make check)
(cd _build-sanitizer && ../configure CC=clang
CFLAGS="-fsanitize=address,undefined -Og" && make check)
or something like that, which allows for incremental rebuilds without
having to "make distclean" and re-running configure manually -- and for
that, it helps to have full out-of-source-tree build support anyways.
I haven't checked how autoconf behaves for "make distcheck" if the
source tree isn't capable.