I haven't seen a definitive howto here or elsewhere for building 
2.0.16 on Mac OS X, so I thought I'd post this for the archives.

I'm using 2.0.16 since the project I'm working on needs OpenLDAP, 
which doesn't yet support sasl 2.x.

I used fink (a package manager, for those of you not familiar with 
Mac OS X) for:
        -db3
        -openssl

Download cyrus:

>wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.0.16.tar.gz
>tar -xvzf cyrus-imapd-2.0.16.tar.gz
>pushd cyrus-imapd-2.0.16

Set these environmental variables:

>setenv PERL5LIB /System/Library/Perl/darwin

        *fink sets the one above to it's own value, which fsck's up 
some assumption on the
        part of the imapd perl build environment, I think.

>setenv LDFLAGS -flat_namespace
>setenv CFLAGS -fno-common
        *Unset the generic -I/sw/include and-L/sw/lib generally used 
with fink. For best results,
        point configure options directly at resource.

Copy config.guess so we recognize we're on Mac OS X:

>cp /usr/libexec/config.* .


rm msg.h from
         imap/mboxlist.c
         imtest/imtest.c
         installsieve/request.c
         perl/sieve/lib/request.c

add
         <#include sys/time.h>
to imap/setproctitle.c


in perl/imap/Makefile.PL, change

        my $SASL_LIB = $ENV{SASL_LIB} || "-lsasl";
to

        my $SASL_LIB = $ENV{SASL_LIB} || "-L/usr/local/lib -lsasl";

I /did not/ have to add the above to the other Makefile.PL's. (sieve, etc).

Configure. I found that -with-sasl had to correspond exactly to the 
location added into  perl/imap/Makefile.PL. The configure script is 
apparently MUCH nicer about finding things than perl is- ie configure 
would find it in it's simlinked location (/usr) while perl would not. 
Additionally, as mentioned, unless perl's -L matched -with-sasl=, 
perl couldn't find -lsasl.

>./configure --with-sasl=/usr/local --with-openssl=/sw --with-dbdir=/sw

Make, etc:

>make depend ;; make all

Add Cyrus User to netinfo:

>echo 'cyrus:*:23459:6::0:0:Mail:/usr/cyrus:/usr/bin/false' | \
>sudo niload passwd /

sudo make install

...everything else goes according to the documentation.
-- 

Reply via email to