Portfile

# $Id: Portfile 20413 2006-11-03 02:15:03Z jberry@macports.org $
PortSystem 1.0

name mailman
version 2.1.5
categories mail
maintainers nomaintainer@macports.org
description Mailman, the GNU Mailing List Manager
long_description Mailman is free software for managing electronic \
mail discussion and e-newsletter lists. Mailman is \
integrated with the web, making it easy for users to \
manage their accounts and for list owners to \
administer their lists. Mailman supports built-in \
archiving, automatic bounce processing, content \
filtering, digest delivery, spam filters, and more.
homepage http://www.list.org/
master_sites sourceforge
extract.suffix .tgz
checksums md5 f5f56f04747cd4aff67427e7a45631af
platforms darwin

depends_build bin:python:python23

depends_run bin:postfix:postfix \
bin:httpd:apache

platform darwin {
depends_run-append path:/Library/StartupItems/DarwinPortsStartup:DarwinPortsStartup
}

# Mailman installation directories
set execdir ${prefix}/libexec/${name}
set sharedir ${prefix}/share/${name}
set datadir ${prefix}/var/${name}
set docdir ${prefix}/share/doc/${name}
set confdir ${prefix}/etc/httpd

# Mailman user/group name
set mmuser mailman
set mmgroup mailman

# CGI group name (should match apache Portfile)
set cgigroup www

patchfiles patch-Defaults.py.in \
patch-mm_cfg.py.dist.in

configure.pre_args --exec-prefix=${execdir} \
--prefix=${sharedir} \
--with-var-prefix=${datadir}
configure.args --with-username=${mmuser} \
--with-groupname=${mmgroup} \
--with-mail-gid=${mmgroup} \
--with-cgi-gid=${cgigroup} \
--with-cgi-ext=.cgi \
--without-permcheck

pre-destroot {
addgroup ${mmgroup}
adduser ${mmuser} gid=[existsgroup ${mmgroup}]
xinstall -d -m 02775 -o root -g ${mmgroup} ${destroot}${execdir}
xinstall -d -m 02775 -o root -g ${mmgroup} ${destroot}${sharedir}
xinstall -d -m 02775 -o ${mmuser} -g ${mmgroup} ${destroot}${datadir}
}
post-destroot {
# Create dummy files to retain empty directory tree
xinstall -d -m 02775 ${destroot}${datadir}/lists/.turd
system "find ${destroot}${datadir} -type d -empty | xargs -n1 -I% touch %/.turd"

# Cleanup permissions & ownership
foreach dir [exec find ${destroot}${sharedir} -type d ! -perm 02775] {
ui_info "${dir}: setting permissions to 02775"
file attributes $dir -permissions 02775
}

# Install startup script
xinstall -d -m 0755 ${destroot}${prefix}/etc/rc.d
system "ln -s ../../[strsed ${sharedir} "g|^${prefix}/||"]/scripts/mailman \
${destroot}${prefix}/etc/rc.d/mailman.sh"

# Install Apache configuration file
xinstall -d -m 0755 ${destroot}${confdir}
xinstall -m 0644 ${filespath}/${name}.conf.in \
${destroot}${confdir}/${name}.conf
reinplace "s|@EXECDIR@|${execdir}|" ${destroot}${confdir}/${name}.conf
reinplace "s|@DATADIR@|${datadir}|" ${destroot}${confdir}/${name}.conf
reinplace "s|@SHAREDIR@|${sharedir}|" ${destroot}${confdir}/${name}.conf
reinplace "s|@CONFDIR@|${confdir}|" \
${destroot}${sharedir}/Mailman/mm_cfg.py.dist \
${destroot}${sharedir}/Mailman/mm_cfg.py

# Install documentation files
xinstall -d -m 0755 ${destroot}${docdir}
foreach file [glob ${worksrcpath}/\[A-IN-Z\]*] {
xinstall -m 0644 ${file} ${destroot}${docdir}
}

# Check installation under destroot
system "cd ${destroot}${sharedir} && \
DESTDIR=${destroot} PYTHONPATH=.:./pythonlib ./bin/check_perms"
}

post-install {
# Notify the user what needs to be done after installation
ui_msg "------------------------------------------------------------"
ui_msg "Be sure to verify the email and URL host settings in the"
ui_msg "Mailman configuration file (they may have been guessed"
ui_msg "incorrectly during the configuration step):"
ui_msg " "
ui_msg " ${sharedir}/Mailman/mm_cfg.py"
ui_msg " "
ui_msg "configuration file to enable Mailman web access:"
ui_msg "Be sure to add the following line to your Apache httpd.conf"
ui_msg "configuration file to enable Mailman web access:"
ui_msg " "
ui_msg " Include ${prefix}/etc/httpd/${name}.conf"
ui_msg " "
ui_msg "Be sure to setup the crontab entries for the '${mmuser}'"
ui_msg "user. Mailman runs a number of cron jobs for its basic"
ui_msg "functionality."
ui_msg " "
ui_msg " cd ${sharedir}/cron"
ui_msg " sudo crontab -u ${mmuser} crontab.in"
ui_msg " "
ui_msg "Also, be sure to read the following files for details"
ui_msg "on creating your site-wide list, setting your site and"
ui_msg "list creator passwords, and creating your first list:"
ui_msg " "
ui_msg " ${docdir}/INSTALL"
ui_msg " ${docdir}/README"
ui_msg " "
ui_msg "Finally, either restart your system to start up the"
ui_msg "Mailman queue runner, or use the following to start"
ui_msg "it running immediately:"
ui_msg " "
ui_msg " sudo ${prefix}/etc/rc.d/mailman.sh start"
ui_msg "------------------------------------------------------------"
}

files