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