Red Hat Bugzilla – Bug 1461669
cyrus-imapd-3.0.1-5.fc27 FTBFS: managesieve.so: undefined symbol: sqlite3_column_text
Last modified: 2017-06-16 02:32:03 EDT
cyrus-imapd-3.0.1-5.fc27 fails to build in F27 on all architectures except s309x because a test fails:
There was 1 failure:
Can't load '/builddir/build/BUILDROOT/cyrus-imapd-3.0.1-5.fc27.x86_64/usr/lib64/perl5/vendor_perl/auto/Cyrus/SIEVE/managesieve/managesieve.so' for module Cyrus::SIEVE::managesieve: /builddir/build/BUILDROOT/cyrus-imapd-3.0.1-5.fc27.x86_64/usr/lib64/perl5/vendor_perl/auto/Cyrus/SIEVE/managesieve/managesieve.so: undefined symbol: sqlite3_column_text at /usr/lib64/perl5/DynaLoader.pm line 193.
� at /builddir/build/BUILDROOT/cyrus-imapd-3.0.1-5.fc27.x86_64/usr/bin/installsieve line 64.
Compilation failed in require at /builddir/build/BUILDROOT/cyrus-imapd-3.0.1-5.fc27.x86_64/usr/bin/installsieve line 64.
BEGIN failed--compilation aborted at /builddir/build/BUILDROOT/cyrus-imapd-3.0.1-5.fc27.x86_64/usr/bin/installsieve line 64.
This could be triggered by removing hardening suppression in Fedora's perl-5.26.0. It probably means a compile unit for managesieve.so refers to sqlite3_column_text symbol that does not exist anywhere (maybe removed from the sqlite library).
Ugh, this of course was working fine before the perl rebuild.
I'm not sure I understand what you mean by "removing hardening suppression". Are you saying that you should not use hardening flags when building compiled code in Perl modules? Perl XS stuff is not something I have a lot of experience with so I will probably need a bit of guidance here.
So, looking at the Perl spec I noticed references to https://bugzilla.redhat.com/show_bug.cgi?id=1238804 which I suppose explains your somewhat cryptic comment about removing hardening suppression.
I guess when the compiler flags used by Perl recently changed to come in line with what the distro uses, something related to implicit linking also changed. And if you tweak the relevant Makefile.PL to add -lsqlite3 then that error goes away (and is replaced by another one related to Postgres).
In any case, this is fixed in rawhide.