Libtool and Support for Shared Libraries (3)
Greg Banks
gnb at fastmail.fm
Thu Jun 7 10:11:04 EDT 2012
Sent from my iPhone
On 07/06/2012, at 23:24, Bron Gondwana <brong at fastmail.fm> wrote:
> On Tue, Jun 5, 2012, at 12:49 PM, Дилян Палаузов wrote:
>> Hello,
>>
>> now libcyrus and libcyrus_min are compiled once as shared libraries,
>> once under perl/ as non-static convenience libraries,
>> perl/imap/IMAP.so and perl/sieve/managesieve/managesieve.so link
>> statically with the non-static convenience libraries,
>> so that IMAP.so and managesieve.so do need neither libcyrus and
>> libcyrus_min at run time nor the RPATH with those libraries at tun
>> time.
>
> Talking about dependencies across random shit - I've just started
> trying
> to backport the autocreate and autosieve libraries - and it's a right
> pain. They need sieve/libsieve.a linked in to EVERYWHERE that has
> mboxlist linked it by the looks of things, which is painful:
>
> https://github.com/brong/cyrus-imapd/tree/autofoo
>
> gcc -fPIC -g -W -Wall -Wextra -o imap/arbitron imap/arbitron.o
> imap/cli_fatal.o imap/mutex_fake.o sieve/libsieve.a imap/libimap.a
> lib/libcyrus.a lib/libcyrus_min.a -lsasl2 -lssl -lcrypto -ldl -
> ldb-4.8 -lpcre -lpcreposix -lz -lcom_err -luuid -ldl -ldb-4.8 -
> lpcre -lpcreposix -lz
> imap/libimap.a(autosieve.o): In function `autoadd_sieve':
> /home/brong/src/cyrus-imapd/imap/autosieve.c:233: undefined
> reference to `sieve_generate_bytecode'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:237: undefined
> reference to `sieve_script_free'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:243: undefined
> reference to `sieve_emit_bytecode'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:247: undefined
> reference to `sieve_free_bytecode'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:248: undefined
> reference to `sieve_script_free'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:255: undefined
> reference to `sieve_free_bytecode'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:256: undefined
> reference to `sieve_script_free'
> imap/libimap.a(autosieve.o): In function `is_script_parsable':
> /home/brong/src/cyrus-imapd/imap/autosieve.c:437: undefined
> reference to `sieve_interp_alloc'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:443: undefined
> reference to `sieve_register_redirect'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:448: undefined
> reference to `sieve_register_discard'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:453: undefined
> reference to `sieve_register_reject'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:458: undefined
> reference to `sieve_register_fileinto'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:463: undefined
> reference to `sieve_register_keep'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:469: undefined
> reference to `sieve_register_imapflags'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:475: undefined
> reference to `sieve_register_size'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:481: undefined
> reference to `sieve_register_header'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:487: undefined
> reference to `sieve_register_envelope'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:493: undefined
> reference to `sieve_register_vacation'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:499: undefined
> reference to `sieve_register_notify'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:505: undefined
> reference to `sieve_register_parse_error'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:516: undefined
> reference to `sieve_script_parse'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:522: undefined
> reference to `sieve_script_free'
> /home/brong/src/cyrus-imapd/imap/autosieve.c:529: undefined
> reference to `sieve_interp_free'
> collect2: ld returned 1 exit status
> make[2]: *** [imap/arbitron] Error 1
>
>
> I'm thinking maybe what's actually needed here is moving all the
> automagic out into a separate library which only gets included by the
> three daemons which actually need it (lmtp which already has sieve,
> imapd and pop3d)
>
> Any other ideas?
Hook in the new code at runtime via callbacks?
>
> Bron.
> --
> Bron Gondwana
> brong at fastmail.fm
>
More information about the Cyrus-devel
mailing list