# $Id: Portfile,v 1.4 2005/08/11 21:33:21 rshaw Exp $
PortSystem		1.0

name			mailman
version			2.1.5
categories		mail
maintainers		darwinports@opendarwin.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 "------------------------------------------------------------"
}

