Updates:

I have added an Issue ("Work item") #520 and Merge Request !192 to the muttmua project to fix the gettext issue below and one more to fix out-of-path "make check" for shellcheck and tabcheck.

The Gitlab pipeline fails because the local debian/trixie image seems to be missing the "autopoint" package, which on Debian Trixie is split out from the gettext* packages. I don't see how the image registry.gitlab.com/muttmua/mutt/debian:trixie gets built or pushed and haven't pulled it to see what's in it.

On Debian trixie, autopoint is a separate package from gettext and needs to be installed separately, but you may NOT want to take my .gitlab-ci.yml patch here https://gitlab.com/mandree/mutt/-/commit/51c6549b875813e2a81673c1a1005ae741cfca37

Am 13.04.26 um 18:59 schrieb Matthias Andree via Mutt-dev:

Am 13.04.26 um 12:21 schrieb Kevin J. McCarthy:
On Mon, Apr 13, 2026 at 10:33:31AM +0200, Oswald Buddenhagen via Mutt-dev wrote:
On Mon, Apr 13, 2026 at 12:44:21PM +0800, Kevin J. McCarthy wrote:
The only workaround I could
find was running autoreconf with '-if' to force install.

this is a completely normal thing to require for a build from a git. why are these .m4 files even in the repository?

Hi Oswald,

Historically they have been, for far longer than when I came on the project.  The prepare script seems not to have been changed for 19 years.  I haven't seen this problem since I've been maintaining mutt, so I'm a bit confused.

Hi everyone, long time no mail to the lists from my part...


It helps to put a line "AM_GNU_GETTEXT_VERSION(0.21)" into configure.ac.  Reason is this is the only way to tell autopoint (which runs underneath autoreconf) to know what version the m4/ and po/ files it copies are from. It doesn't know, so it can break on any system that's sufficiently far away from the 0.21 files that Kevin checked into these folders 2021, with https://gitlab.com/muttmua/mutt/-/commit/ccc18061461c025ee05754d4b9e8f94db2fdb233

My routine for git checkouts is "autoreconf -isvf", or, spelled out, "autoreconf -install --symlink --verbose --force"; gettext on the maintainer's (Kevin's) system changes, autopoint needs the --force option to get the matching files there in case it's unspecified or somehow doesn't work because then autopoint has the liberty of making everything consistent (autoreconf passes the --force option through).

Now, the CI builder or another developer's computer may have a different gettext version then Kevin, and then that developer or CI job's notion of what gettext should be ("whatever I have locally") and what's in m4/ are inconsistence, and that wreaks havoc. I have seen over the years that some files get added to m4/, others are removed.

In fetchmail, the only package I maintain (upstream) that uses GNU gettext, I do not check in m4/ files, but my CI setup is also considerably narrower than mutt's apparently, and I test on a few Linux distros, FreeBSD, and occasionally OpenBSD


When I updated to a vanilla gettext configuration with gettextize five years ago, I committed the changes, as I thought the manual suggested:

https://www.gnu.org/software/gettext/manual/html_node/Distributed-Development.html

However, if it I did something wrong, then let's talk about what needs to be changed.


The "something wrong" part can be fixed by adding one line AM_GNU_GETTEXT_VERSION(0.21) to configure.ac

Thas two impacts:

1. it specifies the oldest that can be on a user's computer when building mutt (because we set AM_GNU_GETTEXT([external]) as is advised), to avoid arcane errors but make the minimum version explicit, and if autopoint is older than 0.21, it will reject and suggest updating. Since autopoint runs before ./configure, --disable-nls does not help.

2. it tells developers' autopoint that the m4/ files are good, and on my Fedora 43 (which has gettext 0.25.1), it only wants to add po/Makevars.template (which is for bootstrapping things, but mutt already has po/Makevars, so it's of limited use -- for maintainers still helpful only during gettextize-based updates to see if new configuration items appear by diffing Makevars and the .template and look what's local customization and what's upstream addition).


HTH

Cheers,
Matthias

Reply via email to