Sent from my iPhone
On 07/06/2012, at 23:24, Bron Gondwana <br...@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
br...@fastmail.fm