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? Bron. -- Bron Gondwana br...@fastmail.fm