# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id$

PortSystem          1.0

name                cyrus-imapd
version             2.4.17
set perl_version    5.16
categories          mail
platforms           darwin
license             BSD-old
maintainers         nomaintainer

description         The Cyrus IMAP Server
long_description    Popular, scalable, open standars based IMAP & POP3 mail server \
                    developed by The Carnegie Mellon University.

homepage            http://cyrusimap.org/
master_sites        ftp://ftp.cyrusimap.org/cyrus-imapd/

checksums           rmd160  c28e971515130eea23067b7015047a120edba86f \
                    sha256  b3e30052c764ee7163947ffde27bdd58bd4dd2e5697ad144491941e46300a583

depends_build       port:makedepend

depends_lib         port:perl${perl_version} \
                    port:cyrus-sasl2 \
                    port:db44 \
                    port:openssl

patchfiles          patch-depot-Makefile.in.diff \
                    patch-lib-charset.c.diff

post-patch {
    foreach dir {contrib contrib/cyrus-graphtools.1.0/cgi-bin contrib/cyrus-graphtools.1.0/script perl/imap/examples perl/sieve/scripts tools} {
        eval reinplace "s|^#!.*perl|#!${prefix}/bin/perl${perl_version}|" [glob -d ${worksrcpath}/${dir} *.pl]
    }
}

# wrong number of arguments at (eval 1) line 41, <DATA> line 256.
configure.ccache    no

configure.perl      ${prefix}/bin/perl${perl_version}

configure.args      --mandir=${prefix}/share/man \
                    --sysconfdir=${prefix}/etc/cyrus \
                    --with-cyrus-prefix=${prefix} \
                    --with-pidfile=${prefix}/var/run/cyrus-master.pid \
                    --with-bdb-incdir=${prefix}/include/db44 \
                    --with-bdb-libdir=${prefix}/lib/db44 \
                    --with-perl=${prefix}/bin/perl${perl_version} \
                    --with-sasl=${prefix} \
                    --with-openssl=${prefix} \
                    --with-cyrus-user=cyrus \
                    --with-cyrus-group=mail \
                    --enable-cmulocal \
                    --enable-netscapehack \
                    --with-snmp=no \
                    --disable-sieve \
                    --disable-gssapi \
                    --with-com_err

startupitem.create  yes
startupitem.name    cyrus
startupitem.requires Disks Network "System Log"
startupitem.start   "${prefix}/bin/master -d"
startupitem.stop    "pidfile=${prefix}/var/run/cyrus-master.pid
            if \[ -f \${pidfile} \]; then
               kill -TERM \$(cat \${pidfile})
            fi"

post-destroot   {
        add_users cyrus group=cyrus home=${prefix}/var/imap shell=/usr/bin/false passwd="\*"
        xinstall -m 755 -v ${worksrcpath}/tools/mkimap ${destroot}${prefix}/bin
        reinplace "s|/etc/imapd.conf|${prefix}/etc/cyrus/imapd.conf|" ${destroot}${prefix}/bin/mkimap
        xinstall -m 755 -v ${worksrcpath}/tools/mknewsgroups ${destroot}${prefix}/bin
        xinstall -m 755 -v ${worksrcpath}/tools/dohash ${destroot}${prefix}/bin
        xinstall -m 755 -v ${worksrcpath}/tools/rehash ${destroot}${prefix}/bin
        xinstall -m 755 -v ${worksrcpath}/tools/upgradesieve ${destroot}${prefix}/bin
        xinstall -d -m 755 ${destroot}${prefix}/share/doc/
        file copy ${worksrcpath}/doc ${destroot}${prefix}/share/doc/${name}
        foreach d [glob -directory ${destroot}${prefix}/share/doc/${name} -type d *] { file delete -force ${destroot}${prefix}/share/doc/${name}/html ${destroot}${prefix}/share/doc/${name}/CVS $d/CVS }
        xinstall -d -m 755 ${destroot}${prefix}/etc/cyrus/samples
        foreach f [glob -directory ${worksrcpath}/master/conf -type f *.conf] {
            xinstall -m 644 -v $f ${destroot}${prefix}/etc/cyrus/samples/[file tail $f].sample
        }
        xinstall -d -m 750 -o cyrus -g mail ${destroot}${prefix}/var/imap
        xinstall -d -m 750 -o cyrus -g mail ${destroot}${prefix}/var/spool/imap
        destroot.keepdirs ${destroot}${prefix}/var/run ${destroot}${prefix}/var/imap \
        ${destroot}${prefix}/var/spool/imap ${destroot}${prefix}/var/log
        eval delete [glob ${destroot}${prefix}/lib/perl5/*/*/perllocal.pod]
}

platform powerpc {
        configure.args-append --build=powerpc
}

variant murder description {Enable IMAP Murder support} {
        configure.args-append --enable-murder
}

platform i386 {
        configure.args-append --build=i386
}

variant snmp description {Use Net SNMP (currently broken)} {
        depends_lib-append      port:net-snmp
        configure.args-delete   --with-snmp=no
        configure.args-append   --with-snmp=yes
}

livecheck.type      regex
livecheck.url       ${homepage}
livecheck.regex     "/${name}/${name}-(\\d+(?:\\.\\d+)*)\\${extract.suffix}"

##
# Miscellaneous notes:
# -) Port is itself bare bones, suport for many other things could be added (maybe as variants), so suggest away!
##