If option ICU is on, dovecot fails to link after the recent update of devel/icu to 76.1, setting it to off, makes the linking complete without an issue.
Created attachment 257550 [details] poudriere build log
relevant log lines: --- libdovecot-fts.la --- libtool: link: (cd ".libs" && rm -f "libdovecot-fts.so.0" && ln -s "libdovecot-fts.so.0.0.0" "libdovecot-fts.so.0") libtool: link: (cd ".libs" && rm -f "libdovecot-fts.so" && ln -s "libdovecot-fts.so.0.0.0" "libdovecot-fts.so") libtool: link: (cd .libs/libdovecot-fts.lax/libfts.a && ar x "/wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src/lib-fts/./.libs/libfts.a") --- test-fts-icu --- ld: error: undefined symbol: u_strFromUTF8Lenient >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) ld: error: undefined symbol: u_errorName >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf16_to_utf8) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_translate) >>> referenced 3 more times ld: error: undefined symbol: u_strToUTF8WithSub >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf16_to_utf8) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf16_to_utf8) ld: error: undefined symbol: ucasemap_open >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_lcase) ld: error: undefined symbol: ucasemap_utf8ToLower >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_lcase) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_lcase) ld: error: undefined symbol: u_cleanup >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_deinit) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_deinit) ld: error: undefined symbol: ucasemap_close >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_deinit) cc: error: linker command failed with exit code 1 (use -v to see invocation) --- test-fts-filter --- ld: error: undefined symbol: u_strFromUTF8Lenient >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf8_to_utf16) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf8_to_utf16) in archive ./.libs/libfts.a ld: error: undefined symbol: u_errorName >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf8_to_utf16) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf16_to_utf8) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_translate) in archive ./.libs/libfts.a >>> referenced 3 more times ld: error: undefined symbol: u_strToUTF8WithSub >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf16_to_utf8) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_utf16_to_utf8) in archive ./.libs/libfts.a ld: error: undefined symbol: ucasemap_open >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_lcase) in archive ./.libs/libfts.a ld: error: undefined symbol: ucasemap_utf8ToLower >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_lcase) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_lcase) in archive ./.libs/libfts.a ld: error: undefined symbol: u_cleanup >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_deinit) in archive ./.libs/libfts.a >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_deinit) in archive ./.libs/libfts.a ld: error: undefined symbol: ucasemap_close >>> referenced by fts-icu.c >>> fts-icu.o:(fts_icu_deinit) in archive ./.libs/libfts.a --- test-fts-icu --- *** [test-fts-icu] Error code 1 make[4]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src/lib-fts --- test-fts-filter --- cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [test-fts-filter] Error code 1 make[4]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src/lib-fts --- libdovecot-fts.la --- libtool: link: ar cr .libs/libdovecot-fts.a .libs/libdovecot-fts.lax/libfts.a/fts-filter-common.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-contractions.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-english-possessive.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-lowercase.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-normalizer-icu.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-stemmer-snowball.o .libs/libdovecot-fts.lax/libfts.a/fts-filter-stopwords.o .libs/libdovecot-fts.lax/libfts.a/fts-filter.o .libs/libdovecot-fts.lax/libfts.a/fts-icu.o .libs/libdovecot-fts.lax/libfts.a/fts-language.o .libs/libdovecot-fts.lax/libfts.a/fts-library.o .libs/libdovecot-fts.lax/libfts.a/fts-tokenizer-address.o .libs/libdovecot-fts.lax/libfts.a/fts-tokenizer-common.o .libs/libdovecot-fts.lax/libfts.a/fts-tokenizer-generic.o .libs/libdovecot-fts.lax/libfts.a/fts-tokenizer.o libtool: link: ranlib .libs/libdovecot-fts.a libtool: link: rm -fr .libs/libdovecot-fts.lax libtool: link: ( cd ".libs" && rm -f "libdovecot-fts.la" && ln -s "../libdovecot-fts.la" "libdovecot-fts.la" ) 2 errors make[4]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src/lib-fts make[3]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src/lib-fts make[2]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1/src make[1]: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1 make: stopped in /wrkdirs/usr/ports/mail/dovecot/work-default/dovecot-2.3.21.1 ===> Compilation failed unexpectedly.
--- mail/dovecot/Makefile.orig +++ mail/dovecot/Makefile @@ -92,8 +92,10 @@ GSSAPI_NONE_CONFIGURE_ON= --without-gssapi GSSAPI_NONE_CONFIGURE_OFF= --with-gssapi ${GSSAPI_CONFIGURE_ARGS} -ICU_LIB_DEPENDS= libicui18n.so:devel/icu +ICU_LIB_DEPENDS= libicui18n.so:devel/icu \ + libicuuc.so:devel/icu ICU_CONFIGURE_WITH= icu +ICU_LDFLAGS= -licuuc LDAP_USES= ldap LDAP_CONFIGURE_WITH= ldap
(In reply to Vladimir Druzenko from comment #3) Proposed changes works like a charm. Closing this whenever it's in the ports tree.
I think I can commit this patch as a "fix build". The maintainer has the right to replace this patch with a better one in his opinion.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=8d5f66f0fa904ccfda9accffde16063a2198c9f7 commit 8d5f66f0fa904ccfda9accffde16063a2198c9f7 Author: Vladimir Druzenko <vvd@FreeBSD.org> AuthorDate: 2025-02-15 20:47:07 +0000 Commit: Vladimir Druzenko <vvd@FreeBSD.org> CommitDate: 2025-02-15 20:47:07 +0000 mail/dovecot: Fix build with option ICU (full text search plugin) after update icu to 76.1 ld: error: undefined symbol: u_strFromUTF8Lenient >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) ld: error: undefined symbol: u_errorName >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf8_to_utf16) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_utf16_to_utf8) >>> referenced by fts-icu.c >>> .libs/fts-icu.o:(fts_icu_translate) >>> referenced 3 more times PR: 284832 Approved by: ler (maintainer, implicit) mail/dovecot/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)