Build of claws mail, git checkout, currently fails in `po/` with `make[2]: *** No rule to make target '/config.status', needed by 'Makefile'. Stop.`: ``` Configure finished, type 'make' to build. make all-recursive make[1]: Entering directory '/var/cache/makepkg/build/claws-mail-git/src/claws-mail' Making all in po make[2]: Entering directory '/var/cache/makepkg/build/claws-mail-git/src/claws-mail/po' make[2]: *** No rule to make target '/config.status', needed by 'Makefile'. Stop. make[2]: Leaving directory '/var/cache/makepkg/build/claws-mail-git/src/claws-mail/po' make[1]: *** [Makefile:803: all-recursive] Error 1 make[1]: Leaving directory '/var/cache/makepkg/build/claws-mail-git/src/claws-mail' make: *** [Makefile:577: all] Error 2 ``` Built using claws mail git checkout from git://git.claws-mail.org/claws.git, master branch, latest commit from 2025-03-27, commit hash 1324da453 (but the issue already existed longer), on Artix GNU/ Linux (rolling release). libtoolize version: GNU libtool 2.5.4.1-baa1-dirty make version: GNU Make, 4.4.1 GCC version: 14.2.1 Build with ``` ./configure --prefix=/usr --disable-static \ --enable-enchant \ --enable-gnutls \ --enable-ldap \ --enable-crash-dialog \ --enable-pgpmime-plugin \ --enable-spamassassin-plugin \ --enable-bogofilter-plugin \ --enable-fancy-plugin \ --enable-manual make ``` Terminal output of the `./autogen.sh` and `./configure` calls: ``` libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'. libtoolize: copying file 'config/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' configure.ac:86: installing 'config/compile' configure.ac:12: installing 'config/config.guess' configure.ac:12: installing 'config/config.sub' configure.ac:13: installing 'config/install-sh' configure.ac:13: installing 'config/missing' src/Makefile.am: installing 'config/depcomp' configure.ac: installing 'config/ylwrap' checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking target system type... x86_64-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking xargs -n works... yes checking for gtk-update-icon-cache... yes checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports the include directive... yes (GNU style) checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... gcc3 checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for wchar.h... yes checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking whether _XOPEN_SOURCE should be defined... no checking for gcc... (cached) gcc checking whether the compiler supports GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to enable C11 features... (cached) none needed checking whether gcc understands -c and -o together... (cached) yes checking dependency style of gcc... (cached) gcc3 checking for library containing strerror... none required checking whether ln -s works... yes checking whether make sets $(MAKE)... (cached) yes checking how to run the C preprocessor... gcc -E checking for flex... flex checking for lex output file root... lex.yy checking for lex library... none needed checking whether yytext is a pointer... yes checking for bison... bison -y checking 32-bit host C ABI... no checking for egrep -e... /usr/bin/grep -E checking for ELF binary format... yes checking for the common suffixes of directories in the library search path... lib,lib,lib64 checking how to print strings... printf checking for a sed that does not truncate output... /usr/bin/sed checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... yes checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for windres... no checking for gawk... (cached) gawk checking for g++... g++ checking whether the compiler supports GNU C++... yes checking whether g++ accepts -g... yes checking for g++ option to enable C++11 features... none needed checking dependency style of g++... gcc3 checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for g++... /usr/bin/g++ checking for gcc option to enable large file support... none needed checking for host platform... x86_64-pc-linux-gnu checking for native Win32... no checking for Cygwin... no checking for time_t format specifier... ld checking if gcc supports -Wno-pointer-sign... yes checking for ld... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking for shared library run path origin... done checking for iconv... yes checking for working iconv... yes checking whether iconv is compatible with its POSIX signature... yes checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge configure: setting ALL_LINGUAS in configure.in is obsolete checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyPreferredLanguages... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for docbook2html... /usr/bin/docbook2html checking for docbook2txt... /usr/bin/docbook2txt checking for docbook2ps... /usr/bin/docbook2ps checking for docbook2pdf... /usr/bin/docbook2pdf checking for setlocale in -lxpg4... no checking whether to use LibSM... yes checking for SmcSaveYourselfDone in -lSM... yes checking for X11/SM/SMlib.h... yes checking for __VA_OPT__... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for fcntl.h... yes checking for sys/file.h... yes checking for unistd.h... (cached) yes checking for paths.h... yes checking for sys/param.h... yes checking for sys/utsname.h... yes checking for sys/select.h... yes checking for wchar.h... (cached) yes checking for wctype.h... yes checking for locale.h... yes checking for netdb.h... yes checking for execinfo.h... yes checking for library containing backtrace_symbols... none required checking for off_t... yes checking for pid_t... yes checking for size_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking size of unsigned short... 2 checking size of unsigned int... 4 checking size of unsigned long... 8 checking for working alloca.h... yes checking for alloca... yes checking for fchmod... yes checking for fgets_unlocked... yes checking for flock... yes checking for lockf... yes checking for strcasestr... yes checking for glib-2.0 >= 2.50 gmodule-2.0 >= 2.50 gobject-2.0 >= 2.50 gthread-2.0 >= 2.50... yes checking for gdk-pixbuf-2.0 >= 2.26... yes checking whether to use IPv6... yes checking for IPv6 support... yes checking whether to use GnuTLS... yes checking for gnutls >= 2.2... yes Building with GnuTLS checking for gnutls >= 2.11... yes checking for nettle... yes checking whether GnuTLS support is present for OAuth2... yes checking whether to build OAuth2 support... yes checking for gtk+-3.0 >= 3.20 cairo... yes checking whether to use deprecated GTK functions... yes checking whether to use enchant... yes checking for enchant >= 1.4.0... no checking for enchant-2 >= 2.0.0... yes Building with enchant-2 checking for gdb... yes checking whether to use crash dialog... yes checking whether to use compface... yes checking for uncompface in -lcompface... yes checking whether to use pthread... yes checking for pthread_create in -lpthread... yes checking for pthread.h... yes checking for res_query in -lresolv... yes checking for libstartup-notification-1.0 >= 0.5... yes Building with libstartup-notification checking for dbus-1 >= 0.60, dbus-glib-1 >= 0.60... yes checking whether DBUS support for alternate address book is present... yes checking whether to enable alternate address book... no checking whether to use LDAP... yes checking for res_query in -lresolv... (cached) yes checking for bind in -lsocket... no checking for gethostbyaddr in -lnsl... yes checking for ber_get_tag in -llber... yes checking for ldap.h... yes checking for lber.h... yes checking for ldap_open in -lldap... yes checking for ldap_start_tls_s in -lldap... yes checking whether ldap library is available... yes checking whether TLS library is available... yes checking The API version of OpenLDAP... version >= 3000 checking whether to use JPilot... yes checking for pi-args.h... no checking for pi-appinfo.h... no checking for pi-address.h... no checking for pi-version.h... no checking for libpisock/pi-args.h... no checking for libpisock/pi-appinfo.h... no checking for libpisock/pi-address.h... no checking for libpisock/pi-version.h... no checking for unpack_Address in -lpisock... no configure: JPilot support not available checking for libnm... yes Building with NetworkManager support checking whether to use libetpan... yes checking for libetpan >= 1.9.4... yes checking for libetpan/libetpan.h... yes checking whether libetpan-config hints compiles and links fine... yes checking whether to use librsvg... yes checking for librsvg-2.0 >= 2.39.0 cairo >= 1.0.0... yes checking whether to use valgrind... yes checking for valgrind >= 2.4.0... yes checking whether to build unit tests... no checking whether to build addressbook with more debug calls... no checking whether to build LDAP with more debug calls... no checking whether to build archive plugin with more debug calls... no checking whether to build with timing debug calls... no checking for libcurl... yes checking for expat... yes checking for webkit2gtk-4.1... yes checking for libarchive... yes checking for archive_read_new in -larchive... yes checking for cairo >= 1.12.0... yes checking for fontconfig... yes checking for gumbo >= 0.12... yes checking for libical >= 2.0... yes checking for poppler-glib >= 0.12.0... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether POPPLER_DEST_NAMED is declared... yes checking whether POPPLER_DEST_XYZ is declared... yes checking for perl... yes checking for perl >= 5.8.0... yes checking for perl module ExtUtils::Embed... ok checking for Perl compile flags... ok configure: Adding perl LIBS -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/include/db5.3 -D_LARGEFILE_SOURCE -I/usr/lib/perl5/5.40/core_perl/CORE checking for perl_alloc in -lperl... no checking for libperl.so... yes checking for gpgme >= 1.1.1... yes checking for gpg-error... yes checking for python3... yes checking for python3-embed... yes checking for pygobject-3.0... yes checking for libnotify >= 0.4.3... yes checking for libcanberra-gtk3... yes checking for unity messaging-menu... no checking for ayatana-appindicator3-0.1... yes checking for gio-2.0 >= 2.15.6 gio-unix-2.0 >= 2.15.6... yes checking for ytnef.h... yes checking how libytnef's SwapDDWord() should be called... ok checking whether to build acpi_notifier plugin... yes checking whether to build address_keeper plugin... yes checking whether to build archive plugin... yes checking whether to build att_remover plugin... yes checking whether to build attachwarner plugin... yes checking whether to build bogofilter plugin... yes checking whether to build bsfilter plugin... yes checking whether to build clamd plugin... yes checking whether to build demo plugin... no checking whether to build Dillo plugin... yes checking whether to build fancy plugin... yes checking whether to build fetchinfo plugin... yes checking whether to build keyword_warner plugin... yes checking whether to build libravatar plugin... yes checking whether to build litehtml_viewer plugin... yes checking whether to build mailmbox plugin... yes checking whether to build managesieve plugin... yes checking whether to build newmail plugin... yes checking whether to build notification plugin... yes checking whether to build pdf_viewer plugin... yes checking whether to build perl plugin... yes checking whether to build python plugin... yes checking whether to build pgpcore plugin... yes checking whether to build pgpmime plugin... yes checking whether to build pgpinline plugin... yes checking whether to build rssyl plugin... yes checking whether to build spamassassin plugin... yes checking for sys/time.h... yes checking for syslog.h... yes checking for unistd.h... (cached) yes checking for errno.h... yes checking for sys/errno.h... yes checking for time.h... yes checking for sysexits.h... yes checking for sys/socket.h... yes checking for netdb.h... (cached) yes checking for netinet/in.h... yes checking for SHUT_RD... yes checking for socket... yes checking for strdup... yes checking for strtod... yes checking for strtol... yes checking for snprintf... yes checking for shutdown... yes checking for h_errno... yes checking for in_addr_t... yes checking for INADDR_NONE... yes checking for EX__MAX... yes checking for zlib.h... yes checking for deflate in -lz... yes checking whether to build spamassassin plugin with zlib support... yes checking whether to build smime plugin... yes checking whether to build spam_report plugin... yes checking whether to build tnef_parse plugin... yes checking whether to build vcalendar plugin... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating po/Makefile.in config.status: creating src/common/version.h config.status: creating src/Makefile config.status: creating src/w32-resource.rc config.status: creating src/common/Makefile config.status: creating src/common/passcrypt.h config.status: creating src/common/tests/Makefile config.status: creating src/gtk/Makefile config.status: creating src/etpan/Makefile config.status: creating src/plugins/Makefile config.status: creating src/plugins/acpi_notifier/Makefile config.status: creating src/plugins/address_keeper/Makefile config.status: creating src/plugins/address_keeper/version.rc config.status: creating src/plugins/archive/Makefile config.status: creating src/plugins/att_remover/Makefile config.status: creating src/plugins/att_remover/version.rc config.status: creating src/plugins/attachwarner/Makefile config.status: creating src/plugins/attachwarner/version.rc config.status: creating src/plugins/bogofilter/Makefile config.status: creating src/plugins/bsfilter/Makefile config.status: creating src/plugins/bsfilter/version.rc config.status: creating src/plugins/clamd/Makefile config.status: creating src/plugins/clamd/libclamd/Makefile config.status: creating src/plugins/demo/Makefile config.status: creating src/plugins/dillo/Makefile config.status: creating src/plugins/fancy/Makefile config.status: creating src/plugins/fancy/version.rc config.status: creating src/plugins/fetchinfo/Makefile config.status: creating src/plugins/fetchinfo/version.rc config.status: creating src/plugins/keyword_warner/Makefile config.status: creating src/plugins/keyword_warner/version.rc config.status: creating src/plugins/litehtml_viewer/Makefile config.status: creating src/plugins/litehtml_viewer/version.rc config.status: creating src/plugins/litehtml_viewer/litehtml/Makefile config.status: creating src/plugins/libravatar/Makefile config.status: creating src/plugins/libravatar/version.rc config.status: creating src/plugins/mailmbox/Makefile config.status: creating src/plugins/mailmbox/version.rc config.status: creating src/plugins/managesieve/Makefile config.status: creating src/plugins/managesieve/version.rc config.status: creating src/plugins/newmail/Makefile config.status: creating src/plugins/notification/Makefile config.status: creating src/plugins/notification/version.rc config.status: creating src/plugins/notification/gtkhotkey/Makefile config.status: creating src/plugins/pdf_viewer/Makefile config.status: creating src/plugins/pdf_viewer/version.rc config.status: creating src/plugins/perl/Makefile config.status: creating src/plugins/perl/tools/Makefile config.status: creating src/plugins/python/Makefile config.status: creating src/plugins/python/examples/Makefile config.status: creating src/plugins/pgpcore/Makefile config.status: creating src/plugins/pgpcore/version.rc config.status: creating src/plugins/pgpmime/Makefile config.status: creating src/plugins/pgpmime/version.rc config.status: creating src/plugins/pgpinline/Makefile config.status: creating src/plugins/pgpinline/version.rc config.status: creating src/plugins/rssyl/Makefile config.status: creating src/plugins/rssyl/version.rc config.status: creating src/plugins/rssyl/tests/Makefile config.status: creating src/plugins/rssyl/libfeed/Makefile config.status: creating src/plugins/rssyl/libfeed/tests/Makefile config.status: creating src/plugins/smime/Makefile config.status: creating src/plugins/smime/version.rc config.status: creating src/plugins/spamassassin/Makefile config.status: creating src/plugins/spam_report/Makefile config.status: creating src/plugins/spam_report/version.rc config.status: creating src/plugins/tnef_parse/Makefile config.status: creating src/plugins/tnef_parse/version.rc config.status: creating src/plugins/vcalendar/Makefile config.status: creating src/plugins/vcalendar/version.rc config.status: creating src/tests/Makefile config.status: creating doc/Makefile config.status: creating doc/man/Makefile config.status: creating tools/Makefile config.status: creating config/Makefile config.status: creating manual/Makefile config.status: creating claws-mail.pc config.status: creating config.h config.status: creating claws-features.h config.status: executing depfiles commands config.status: executing libtool commands config.status: executing po-directories commands config.status: creating po/Makefile claws-mail 4.3.1git77 Using Address Book : Original stable interface JPilot : no LDAP : yes gnuTLS : yes OAuth2 : yes iconv : yes compface : yes IPv6 : yes enchant : yes IMAP4 (libetpan) : yes NNTP (libetpan) : yes Crash dialog : yes LibSM : yes DBUS : yes NetworkManager : yes Manual : yes Generic UMPC code : no SVG support : yes Password crypto : gnutls Unit tests : no pthread : yes Startup notification : yes Valgrind support : yes Plugins Built: - acpi_notifier - address_keeper - archive - att_remover - attachwarner - bogofilter - bsfilter - clamd - dillo - fancy - fetchinfo - keyword_warner - libravatar - litehtml_viewer - mailmbox - managesieve - newmail - notification Features: banner command hotkeys lcdproc libayatana-appindicator3 libnotify libcanberra-gtk3 popup trayicon Disabled due to missing dependencies: unity/messaging-menu - pdf_viewer - perl - python - pgpcore - pgpmime - pgpinline - rssyl - spamassassin - smime - spam_report - tnef_parse - vcalendar Disabled: - demo The binary will be installed in /usr/bin Configuration directory: .claws-mail Configure finished, type 'make' to build. ``` Regards!
Try running ./autogen.sh before you build again. There have been lots of changes in the po folder so a complete regeneration of the build files is required.
(In reply to Michael Rasmussen from comment #1) > Try running ./autogen.sh before you build again. There have been lots of > changes in the po folder so a complete regeneration of the build files is > required. Each time I start with a clean checkout and run `NOCONFIGURE=1 ./autogen.sh`. I now also tried * running `./autogen.sh` (without `NOCONFIGURE=1`) before and after `./configure` (and also only one of both) -- error persists. So this is not a solution.
presumably autoconf is not creating config.status in your build dir after running ./configure. Is that right? What does config.log say about config.status?
(In reply to Paul from comment #3) > presumably autoconf is not creating config.status in your build dir after > running ./configure. Is that right? What does config.log say about > config.status? `config.status` is generated. But the `Makefile` in `po/` seems to look for `/config.status` (i.e., in the root directory `/`). `config.log` says about `config.status`: ``` [...] configure:33282: checking that generated files are newer than configure configure:33288: result: done configure:33525: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by claws-mail config.status 4.3.1-77-g1324da, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on <censored>-winmax2 config.status:1649: creating Makefile config.status:1649: creating po/Makefile.in config.status:1649: creating src/common/version.h config.status:1649: creating src/Makefile [...] config.status:1878: executing libtool commands config.status:1878: executing po-directories commands ## ---------------- ## ## Cache variables. ## ## ---------------- ## [...] ``` `po/Makefile` contains: ``` [...] Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && /bin/sh ./config.status $(subdir)/$@.in po-directories [...] ``` So it seems that `top_builddir` environment variable is not properly passed to `po/Makefile` (?).
top_builddir is defined in po/Makevars as ..
I still suspect a local problem. This can stay open until someone can verify a sucessful build using libtool 2.5.4. Possibly your problem is due to your rolling release artix linux.
I have attached my `po/Makefile`, `po/Makefile.in`, `po/Makefile.in.in` and ``po/Makevars`. Can you check if this is correct/ can you attach yours? `po/Makefile` contains: ``` [...] DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ [...] ``` Regards!
Created attachment 2534 [details] po/Makefile
Created attachment 2535 [details] po/Makefile.in
Created attachment 2536 [details] po/Makefile.in.in
Created attachment 2537 [details] po/Makevars
Despite what was said in comment#1, there have not been any structural changes in the po/ directory. The main differences indicated by your generated files (Makefile and Makefile.in) and mine are that you are using gettext 0.24 and I'm using gettext 0.20, but more significantly, your Makefile shows that the following values are not expanded, and here is the problem: POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ CATALOGS = @CATALOGS@ Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ and the POTFILES = \ section doesn't contain the list of files with translatable strings, and the whole section from "# Makevars gets inserted here. (Don't remove this line!)" to ".SUFFIXES:" is missing, as if Makevars is completely ignored.
A look over gettext's release notes doesn't suggest any incompatible changes: https://savannah.gnu.org/news/?group_id=425
Can you attach your generated working `po/Makefile`, too, so that I can do further comparing and testing locally? I do not really know the language of the tools involved, so I am happy to have an example that is supposed to fully work, to start from there.
[...] POFILES = ca.po cs.po da.po de.po el_GR.po en_GB.po es.po fi.po fr.po hu.po id_ID.po it.po ja.po nb.po nl.po pl.po pt_BR.po pt_PT.po ro.po ru.po sk.po sq.po sv.po tr.po zh_TW.po GMOFILES = ca.gmo cs.gmo da.gmo de.gmo el_GR.gmo en_GB.gmo es.gmo fi.gmo fr.gmo hu.gmo id_ID.gmo it.gmo ja.gmo nb.gmo nl.gmo pl.gmo pt_BR.gmo pt_PT.gmo ro.gmo ru.gmo sk.gmo sq.gmo sv.gmo tr.gmo zh_TW.gmo UPDATEPOFILES = ca.po-update cs.po-update da.po-update de.po-update el_GR.po-update en_GB.po-update es.po-update fi.po-update fr.po-update hu.po-update id_ID.po-update it.po-update ja.po-update nb.po-update nl.po-update pl.po-update pt_BR.po-update pt_PT.po-update ro.po-update ru.po-update sk.po-update sq.po-update sv.po-update tr.po-update zh_TW.po-update DUMMYPOFILES = ca.nop cs.nop da.nop de.nop el_GR.nop en_GB.nop es.nop fi.nop fr.nop hu.nop id_ID.nop it.nop ja.nop nb.nop nl.nop pl.nop pt_BR.nop pt_PT.nop ro.nop ru.nop sk.nop sq.nop sv.nop tr.nop zh_TW.nop [...] POTFILES = \ ../src/account.c \ ../src/action.c \ ../src/addrclip.c \ ../src/addr_compl.c \ ../src/addrcustomattr.c \ ../src/addrduplicates.c \ ../src/addressadd.c \ ../src/addressbook.c \ ../src/addressbook_foldersel.c \ ../src/addrgather.c \ ../src/addrindex.c \ ../src/alertpanel.c \ ../src/avatars.c \ ../src/browseldap.c \ ../src/common/md5.c \ ../src/common/plugin.c \ ../src/common/session.c \ ../src/common/smtp.c \ ../src/common/socket.c \ ../src/common/proxy.c \ ../src/common/ssl.c \ ../src/common/ssl_certificate.c \ ../src/common/string_match.c \ ../src/common/utils.c \ ../src/compose.c \ ../src/crash.c \ ../src/editaddress.c \ ../src/editaddress_other_attributes_ldap.c \ ../src/editbook.c \ ../src/editgroup.c \ ../src/editjpilot.c \ ../src/editldap_basedn.c \ ../src/editldap.c \ ../src/edittags.c \ ../src/editvcard.c \ ../src/etpan/etpan-ssl.c \ ../src/etpan/imap-thread.c \ ../src/etpan/nntp-thread.c \ ../src/exphtmldlg.c \ ../src/expldifdlg.c \ ../src/export.c \ ../src/exporthtml.c \ ../src/exportldif.c \ ../src/file_checker.c \ ../src/filtering.c \ ../src/folder.c \ ../src/foldersel.c \ ../src/folderview.c \ ../src/grouplistdialog.c \ ../src/gtk/about.c \ ../src/gtk/colorlabel.c \ ../src/gtk/foldersort.c \ ../src/gtk/gtkaspell.c \ ../src/gtk/gtkutils.c \ ../src/gtk/headers.h \ ../src/gtk/icon_legend.c \ ../src/gtk/inputdialog.c \ ../src/gtk/logwindow.c \ ../src/gtk/menu.c \ ../src/gtk/pluginwindow.c \ ../src/gtk/prefswindow.c \ ../src/gtk/progressdialog.c \ ../src/gtk/quicksearch.c \ ../src/gtk/sslcertwindow.c \ ../src/headerview.c \ ../src/image_viewer.c \ ../src/imap.c \ ../src/imap_gtk.c \ ../src/import.c \ ../src/importldif.c \ ../src/importmutt.c \ ../src/importpine.c \ ../src/inc.c \ ../src/ldapupdate.c \ ../src/ldaputil.c \ ../src/ldif.c \ ../src/main.c \ ../src/mainwindow.c \ ../src/matcher.c \ ../src/mbox.c \ ../src/message_search.c \ ../src/messageview.c \ ../src/mh.c \ ../src/mh_gtk.c \ ../src/mimeview.c \ ../src/news.c \ ../src/news_gtk.c \ ../src/oauth2.c \ ../src/password.c \ ../src/password_gtk.c \ ../src/plugins/acpi_notifier/acpi_notifier.c \ ../src/plugins/address_keeper/address_keeper.c \ ../src/plugins/address_keeper/address_keeper.h \ ../src/plugins/address_keeper/address_keeper_prefs.c \ ../src/plugins/archive/archiver.c \ ../src/plugins/archive/archiver_gtk.c \ ../src/plugins/archive/archiver_prefs.c \ ../src/plugins/att_remover/att_remover.c \ ../src/plugins/attachwarner/attachwarner.c \ ../src/plugins/attachwarner/attachwarner_prefs.c \ ../src/plugins/bogofilter/bogofilter.c \ ../src/plugins/bogofilter/bogofilter_gtk.c \ ../src/plugins/bsfilter/bsfilter.c \ ../src/plugins/bsfilter/bsfilter_gtk.c \ ../src/plugins/clamd/clamav_plugin.c \ ../src/plugins/clamd/clamav_plugin_gtk.c \ ../src/plugins/clamd/libclamd/clamd-plugin.c \ ../src/plugins/demo/demo.c \ ../src/plugins/fancy/fancy_prefs.c \ ../src/plugins/fancy/fancy_viewer.c \ ../src/plugins/fetchinfo/fetchinfo_plugin.c \ ../src/plugins/fetchinfo/fetchinfo_plugin_gtk.c \ ../src/plugins/keyword_warner/keyword_warner.c \ ../src/plugins/keyword_warner/keyword_warner_prefs.c \ ../src/plugins/libravatar/libravatar.c \ ../src/plugins/libravatar/libravatar_prefs.c \ ../src/plugins/litehtml_viewer/lh_prefs.c \ ../src/plugins/litehtml_viewer/lh_widget.cpp \ ../src/plugins/litehtml_viewer/plugin.c \ ../src/plugins/mailmbox/mailmbox_folder.c \ ../src/plugins/mailmbox/plugin.c \ ../src/plugins/mailmbox/plugin_gtk.c \ ../src/plugins/managesieve/managesieve.c \ ../src/plugins/managesieve/sieve_editor.c \ ../src/plugins/managesieve/sieve_manager.c \ ../src/plugins/managesieve/sieve_plugin.c \ ../src/plugins/managesieve/sieve_prefs.c \ ../src/plugins/newmail/newmail.c \ ../src/plugins/notification/notification_ayatana_indicator.c \ ../src/plugins/notification/notification_banner.c \ ../src/plugins/notification/notification_foldercheck.c \ ../src/plugins/notification/notification_lcdproc.c \ ../src/plugins/notification/notification_plugin.c \ ../src/plugins/notification/notification_popup.c \ ../src/plugins/notification/notification_prefs.c \ ../src/plugins/notification/notification_trayicon.c \ ../src/plugins/pdf_viewer/poppler_viewer.c \ ../src/plugins/perl/perl_gtk.c \ ../src/plugins/perl/perl_plugin.c \ ../src/plugins/pgpcore/autocompletion.c \ ../src/plugins/pgpcore/passphrase.c \ ../src/plugins/pgpcore/pgp_viewer.c \ ../src/plugins/pgpcore/plugin.c \ ../src/plugins/pgpcore/prefs_gpg.c \ ../src/plugins/pgpcore/select-keys.c \ ../src/plugins/pgpcore/sgpgme.c \ ../src/plugins/pgpinline/pgpinline.c \ ../src/plugins/pgpinline/plugin.c \ ../src/plugins/pgpmime/pgpmime.c \ ../src/plugins/pgpmime/plugin.c \ ../src/plugins/python/composewindowtype.c \ ../src/plugins/python/python_plugin.c \ ../src/plugins/rssyl/old_feeds.c \ ../src/plugins/rssyl/opml_export.c \ ../src/plugins/rssyl/opml_import.c \ ../src/plugins/rssyl/plugin.c \ ../src/plugins/rssyl/rssyl_add_item.c \ ../src/plugins/rssyl/rssyl.c \ ../src/plugins/rssyl/rssyl_cb_menu.c \ ../src/plugins/rssyl/rssyl_feed.c \ ../src/plugins/rssyl/rssyl_feed.h \ ../src/plugins/rssyl/rssyl_feed_props.c \ ../src/plugins/rssyl/rssyl_gtk.c \ ../src/plugins/rssyl/rssyl.h \ ../src/plugins/rssyl/rssyl_prefs.c \ ../src/plugins/rssyl/rssyl_subscribe.c \ ../src/plugins/rssyl/rssyl_subscribe_gtk.c \ ../src/plugins/rssyl/rssyl_update_comments.c \ ../src/plugins/rssyl/rssyl_update_feed.c \ ../src/plugins/rssyl/rssyl_update_format.c \ ../src/plugins/smime/plugin.c \ ../src/plugins/smime/smime.c \ ../src/plugins/spam_report/spam_report.c \ ../src/plugins/spam_report/spam_report_prefs.c \ ../src/plugins/spamassassin/spamassassin.c \ ../src/plugins/spamassassin/spamassassin_gtk.c \ ../src/plugins/tnef_parse/tnef_parse.c \ ../src/plugins/vcalendar/common-views.c \ ../src/plugins/vcalendar/day-view.c \ ../src/plugins/vcalendar/month-view.c \ ../src/plugins/vcalendar/plugin.c \ ../src/plugins/vcalendar/vcalendar.c \ ../src/plugins/vcalendar/vcal_folder.c \ ../src/plugins/vcalendar/vcal_manager.c \ ../src/plugins/vcalendar/vcal_meeting_gtk.c \ ../src/plugins/vcalendar/vcal_prefs.c \ ../src/pop.c \ ../src/prefs_account.c \ ../src/prefs_actions.c \ ../src/prefs_common.c \ ../src/prefs_compose_writing.c \ ../src/prefs_customheader.c \ ../src/prefs_display_header.c \ ../src/prefs_ext_prog.c \ ../src/prefs_filtering_action.c \ ../src/prefs_filtering.c \ ../src/prefs_folder_column.c \ ../src/prefs_folder_item.c \ ../src/prefs_fonts.c \ ../src/prefs_gtk.c \ ../src/prefs_image_viewer.c \ ../src/prefs_logging.c \ ../src/prefs_matcher.c \ ../src/prefs_message.c \ ../src/prefs_migration.c \ ../src/prefs_msg_colors.c \ ../src/prefs_other.c \ ../src/prefs_proxy.c \ ../src/prefs_quote.c \ ../src/prefs_receive.c \ ../src/prefs_send.c \ ../src/prefs_spelling.c \ ../src/prefs_summaries.c \ ../src/prefs_summary_column.c \ ../src/prefs_summary_open.c \ ../src/prefs_template.c \ ../src/prefs_themes.c \ ../src/prefs_toolbar.c \ ../src/prefs_wrapping.c \ ../src/printing.c \ ../src/privacy.c \ ../src/procmime.c \ ../src/procmsg.c \ ../src/quote_fmt.c \ ../src/quote_fmt_parse.y \ ../src/send_message.c \ ../src/setup.c \ ../src/sourcewindow.c \ ../src/ssl_manager.c \ ../src/summary_search.c \ ../src/summaryview.c \ ../src/textview.c \ ../src/toolbar.c \ ../src/uri_opener.c \ ../src/wizard.c CATALOGS = ca.gmo cs.gmo da.gmo de.gmo el_GR.gmo en_GB.gmo es.gmo fi.gmo fr.gmo hu.gmo id_ID.gmo it.gmo ja.gmo nb.gmo nl.gmo pl.gmo pt_BR.gmo pt_PT.gmo ro.gmo ru.gmo sk.gmo sq.gmo sv.gmo tr.gmo zh_TW.gmo # Makevars gets inserted here. (Don't remove this line!) # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = \ --keyword=_ --flag=_:1:pass-c-format \ --keyword=Q_ --flag=Q_:1:pass-c-format \ --keyword=N_ --flag=N_:1:pass-c-format \ --keyword=C_:1c,2 \ --keyword='proper_name:1,"This is a proper name. See the gettext manual, section Names."' \ --keyword='proper_name_utf8:1,"This is a proper name. See the gettext manual, section Names."' \ --flag=error:3:c-format --flag=error_at_line:5:c-format \ --from-code=UTF-8 # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = The Claws Mail Team # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = paul@claws-mail.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = yes .SUFFIXES: [...] I've got to say, you are using a rolling release distro and, obviously, frequently problems arise because of that, so why not look upstream for solutions rather than using downstream's limited time? We all know that rolling releases come with problems, and that is why most people choose to use a more tested and stable distro. If, by looking upstream, you discover that there are changes in claws-mail's build dependencies that we will need to address, then let us know.
It seems to be gettext 0.24. * I compiled gettext 0.23 from source; build of claws-mail succeeds. * I compiled gettext 0.24 from source; mentioned issue. I build gettext as follows: ``` _CFLAGSADDITIONS="-Wno-error=incompatible-pointer-types -Wno-incompatible-pointer-types" CFLAGS+=" ${_CFLAGSADDITIONS}" CXXFLAGS+=" ${_CFLAGSADDITIONS}" export CFLAGS export CXXFLAGS ./configure \ --prefix=/usr \ --libexecdir=/usr/lib \ --enable-csharp \ --enable-nls \ --with-xz \ --without-included-gettext \ --without-included-libunistring sed -e 's/ -shared / -Wl,-O1,--as-needed\0/g' \ -i gettext-{tools,runtime,runtime/libasprintf}/libtool make ``` (As my distribution builds it, except the added CFLAGS/CXXFLAGS: `-Wno-error=incompatible-pointer-types` I added manually to make gettext 0.23 build with GCC 14.2.1, and then I also silenced the warning when I modify CFLAGS anyway.) No patches. Source from https://ftp.gnu.org/pub/gnu/gettext/gettext-0.23.tar.gz | Source from https://ftp.gnu.org/pub/gnu/gettext/gettext-0.24.tar.gz
Since the gettext 0.24 release notes make no mention of anything related to this, perhaps it's a bug in gettext 0.24. https://savannah.gnu.org/news/?id=10730
(In reply to Paul from comment #17) > Since the gettext 0.24 release notes make no mention of anything related to > this, perhaps it's a bug in gettext 0.24. > https://savannah.gnu.org/news/?id=10730 I reported to gettext, and they reported back: -- %< -- > Configuring `claws-mail` source (latest git checkout from their source repository, git commit hash: `75990d760`) with GNU gettext 0.23 produces a working build; with gettext 0.24 `po/Makefile` is generated wrongly with missing expanded variables and missing parts. > > An excerpt of the differences in the generated Makefile here, full `diff` attached (`gettext-0.23-0.34_po.diff`): > ```diff > --- with_gettext-0.23/claws-mail/po/Makefile 2025-03-30 15:02:30.000605773 +0200 > +++ with_gettext-0.24/claws-mail/po/Makefile 2025-03-30 15:00:49.037268192 +0200 From this diff it's clear that you are combining a Makefile.in.in from gettext 0.18.x (10 years ago) with a gettext.m4 macro from 0.24. This is not supported. The problem is that while po/Makefile.in.in is checked into version control, gettext.m4 is taken from your machine's distro (via 'aclocal'). > (https://www.claws-mail.org/bugzilla/show_bug.cgi?id=4856#c17) From this ticket (comments 1 and 2) apparently the recommended step after the 'git clone' is './autogen.sh'. So, the fix should be 1) to remove po/Makefile.in.in from version control, 2) to add an 'autopoint' invocation, like this: diff --git a/autogen.sh b/autogen.sh index 694ef7cc4..b0f2fdf3c 100755 --- a/autogen.sh +++ b/autogen.sh @@ -50,6 +50,7 @@ case `uname` in esac ${LIBTOOL} \ + && autopoint -f \ && aclocal -I m4 \ && autoconf \ && autoheader \ See its documentation: https://www.gnu.org/software/gettext/manual/html_node/autopoint-Invocation.html Bruno -- >% -- So gettext maintainer(s) have the opinion that it is not a gettext issue but a claws-mail issue. I tried their suggested changes and can confirm that it works for me. I attach a patch updating `autogen.sh`; you still need to remove `po/Makefile.in.in`.
Created attachment 2538 [details] Diff of `po/` directory after `./autogen.sh` and `./configure` with gettext 0.23 and gettext 0.24.
Created attachment 2539 [details] Patch adding `autopoint` run to `autogen.sh`. ... `po/Makefile.in.in` still needs to be removed.
(In reply to linux.felixbecker2 from comment #18) > So gettext maintainer(s) have the opinion that it is not a gettext issue but > a claws-mail issue. Sorry for my un-preciseness; it seems to be a combined issue of gettext version of my distribution and file versions in claws-mail repository. I actually applied it as a workaround for now for the AUR package of claws-mail which I maintain. Regards!
Please attach the version of Makefile.in.in that is pulled in by your system from gettext 0.24.
(In reply to Paul from comment #22) > Please attach the version of Makefile.in.in that is pulled in by your system > from gettext 0.24. `Makefile.in.in` is directly there after a git clone of the repository, without executing anything. After executing a fresh `git clone git://git.claws-mail.org/claws.git`, I attach `claws/po/Makefile.in.in`.
Created attachment 2540 [details] `po/Makefile.in.in` after a fresh `git clone git://git.claws-mail.org/claws.git` (git commit hash: d15484088).
The Makefile.in.in you attached is exactly the same as the one currently in claws-mail's git, so how can point 1) of the supposed fix, mentioned in comment#18, make any sense?
I suppose you did remove the copy of Makefile.in.in from your local git tree, just like you stated needed to be done in comment#20?
(In reply to Paul from comment #25) > The Makefile.in.in you attached is exactly the same as the one currently in > claws-mail's git, so how can point 1) of the supposed fix, mentioned in > comment#18, make any sense? I cannot tell because I don't know how the tools work, please discuss this with the gettext people. I did _delete_ `Makefile.in.in` after clone, and patched `autogen.sh` as mentioned, so there is no `Makefile.in.in` anymore after the fix/workaround mentioned by the gettext people. ... Ah, now I guess what you mean: Do you mean I should attach the `po/Makefile.in.in` which got _re-generated_ after applying those changes? OK, I attach this.
Created attachment 2541 [details] Re-generated `po/Makefile.in.in` after applying the changes mentioned in https://www.claws-mail.org/bugzilla/show_bug.cgi?id=4856#c18 and then running `./autogen.sh`.
OK, there is really little difference between the Makefile.in.in files. I will have to leave this until my system is upgraded to include gettext 0.24, and then I can investigate what, if anything, needs fixing.
I will say that adding autopoint to autogen.sh just creates a load of other problems, so doesn't seem like the solution to me.
Created attachment 2542 [details] `diff` of the original `po/Makefile.in.in` from claws mail git repository and of the re-generated `po/Makefile.in.in` after applying the changes mentioned in Comment 18.
(In reply to Paul from comment #30) > I will say that adding autopoint to autogen.sh just creates a load of other > problems, Which (kind of) problems?
see comment#29. I'll comment further after that.
The content of attachment 2542 [details] has been deleted for the following reason: unnecessary attachment