Bug 284832 - mail/dovecot fts-icu fails to link after devel/icu update to 76.1
Summary: mail/dovecot fts-icu fails to link after devel/icu update to 76.1
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Vladimir Druzenko
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-02-15 13:06 UTC by lysfjord.daniel
Modified: 2025-02-15 20:58 UTC (History)
3 users (show)

See Also:


Attachments
poudriere build log (67.74 KB, application/zip)
2025-02-15 13:08 UTC, lysfjord.daniel
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description lysfjord.daniel 2025-02-15 13:06:58 UTC
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.
Comment 1 lysfjord.daniel 2025-02-15 13:08:16 UTC
Created attachment 257550 [details]
poudriere build log
Comment 2 lysfjord.daniel 2025-02-15 14:29:49 UTC
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.
Comment 3 Vladimir Druzenko freebsd_committer freebsd_triage 2025-02-15 15:41:45 UTC
--- 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
Comment 4 lysfjord.daniel 2025-02-15 15:58:01 UTC
(In reply to Vladimir Druzenko from comment #3)
Proposed changes works like a charm. Closing this whenever it's in the ports tree.
Comment 5 Vladimir Druzenko freebsd_committer freebsd_triage 2025-02-15 20:43:15 UTC
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.
Comment 6 commit-hook freebsd_committer freebsd_triage 2025-02-15 20:57:07 UTC
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(-)