# -*- 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			mailman
version			2.1.13
categories		mail
maintainers		nomaintainer
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     3235323ccb3e0135c10b7c66a440390b \
			sha1    923dd78a17cbab576354b53a80443fe05f134398 \
			rmd160  3a62b04ea0f48c3ecbe815eb927d282f765e416c

platforms		darwin

depends_lib		port:python26

# Create a startupitem
startupitem.create	yes
startupitem.start	"${prefix}/share/mailman/bin/mailman.init start"
startupitem.stop	"${prefix}/share/mailman/bin/mailman.init stop"

# 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 \
			--with-python=${prefix}/bin/python2.6

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}/share/mailman/bin/mailman.init"

	# 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 "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 ${confdir}/${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 launchctl load -w /Library/LaunchDaemons/org.macports.mailman.plist"
	ui_msg "------------------------------------------------------------"
}