summaryrefslogtreecommitdiff
path: root/mail/mailman
diff options
context:
space:
mode:
authorChris Rees <crees@FreeBSD.org>2011-06-15 17:06:18 +0000
committerChris Rees <crees@FreeBSD.org>2011-06-15 17:06:18 +0000
commit9435d28edb199ae5c7c8c02b2d5160bc81207d85 (patch)
treec4eec99fdef54f6cf0d70f5c7551d077400525fd /mail/mailman
parent- add an option (off by default) to build and install the VTK binding classes (diff)
- Revert previous USERS fix until reworked and tested
- Revert MAIL_GROUP change for Postfix - Reset maintainership Approved by: tabthorpe (co-mentor), wxs (maintainer)
Notes
Notes: svn path=/head/; revision=275631
Diffstat (limited to 'mail/mailman')
-rw-r--r--mail/mailman/Makefile52
-rw-r--r--mail/mailman/pkg-deinstall8
-rw-r--r--mail/mailman/pkg-install42
-rw-r--r--mail/mailman/pkg-plist1
4 files changed, 77 insertions, 26 deletions
diff --git a/mail/mailman/Makefile b/mail/mailman/Makefile
index ff9d8b172c28..7dda1427d6c5 100644
--- a/mail/mailman/Makefile
+++ b/mail/mailman/Makefile
@@ -7,7 +7,7 @@
PORTNAME= mailman
DISTVERSION= 2.1.14
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES?= mail
MASTER_SITES= ${MASTER_SITE_GNU} \
SF/${PORTNAME}/Mailman%202.1%20%28stable%29/${PORTVERSION}
@@ -15,7 +15,7 @@ MASTER_SITE_SUBDIR= ${PORTNAME}
EXTRACT_SUFX= .tgz
DIST_SUBDIR= mailman
-MAINTAINER?= wxs@FreeBSD.org
+MAINTAINER?= ports@FreeBSD.org
COMMENT?= A mailing list manager (MLM) with a user-friendly web front-end
OPTIONS= SENDMAIL "for use with sendmail" off \
@@ -27,15 +27,13 @@ OPTIONS= SENDMAIL "for use with sendmail" off \
HTDIG "htdig integration patches" off \
NAMAZU2 "make private archives searchable with namazu2" off
-USE_AUTOTOOLS= autoconf
-GNU_CONFIGURE_PREFIX= ${MAILMANDIR}
+HAS_CONFIGURE= yes
USE_PYTHON= yes
MAKE_JOBS_SAFE= yes
-CONFIGURE_ARGS+=--with-python=${PYTHON_CMD} \
+CONFIGURE_ARGS+= --prefix=${MAILMANDIR} --with-python=${PYTHON_CMD} \
--with-username=${MM_USERNAME} \
--with-groupname=${MM_GROUPNAME} \
- --with-mail-gid=${MAIL_GID} --with-cgi-gid=${CGI_GID} \
- --with-permcheck=no
+ --with-mail-gid=${MAIL_GID} --with-cgi-gid=${CGI_GID}
SUB_FILES= pkg-message
SUB_LIST+= MAILMANDIR=${MAILMANDIR}
USE_RC_SUBR= mailman
@@ -53,9 +51,6 @@ IMGDIR?= www/icons
#
# End of user-configurable variables.
-USERS= ${MM_USERNAME}
-GROUPS= ${MM_GROUPNAME}
-
MAILMANDIR= ${PREFIX}/${MM_DIR}
PKGINSTALL= ${WRKDIR}/pkg-install
PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
@@ -74,7 +69,7 @@ IMGFILES= PythonPowered.png mailman.jpg mm-icon.png
.if defined(WITH_SENDMAIL)
.if defined(WITH_EXIM3) || defined(WITH_EXIM4) || defined(WITH_POSTFIX) || \
defined(WITH_COURIER)
-IGNORE= can only have one MTA selected to integrate with
+BROKEN= choose only one MTA integration
.endif
MAIL_GID?= mailnull
.endif
@@ -82,7 +77,7 @@ MAIL_GID?= mailnull
.if defined(WITH_EXIM3)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM4) || defined(WITH_POSTFIX) || \
defined(WITH_COURIER)
-IGNORE= can only have one MTA selected to integrate with
+BROKEN= choose only one MTA integration
.endif
MAIL_GID?= nobody
.endif
@@ -90,7 +85,7 @@ MAIL_GID?= nobody
.if defined(WITH_EXIM4)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_POSTFIX) || \
defined(WITH_COURIER)
-IGNORE= can only have one MTA selected to integrate with
+BROKEN= choose only one MTA integration
.endif
MAIL_GID?= mail
.endif
@@ -98,16 +93,16 @@ MAIL_GID?= mail
.if defined(WITH_POSTFIX)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_EXIM4) || \
defined(WITH_COURIER)
-IGNORE= can only have one MTA selected to integrate with
+BROKEN= choose only one MTA integration
.endif
-MAIL_GID?= nobody
+MAIL_GID?= mailman
EXTRA_PATCHES+= ${FILESDIR}/postfix-verp.diff
.endif
.if defined(WITH_COURIER)
.if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_EXIM4) || \
defined(WITH_POSTFIX)
-IGNORE= can only have one MTA selected to integrate with
+BROKEN= choose only one MTA integration
.endif
MAIL_GID?= courier
.endif
@@ -154,18 +149,29 @@ pre-fetch:
post-patch:
@${REINPLACE_CMD} -e 's#%%LOCALBASE%%#${LOCALBASE}#g' \
${WRKSRC}/Mailman/Defaults.py.in
-# Disable username check in configure -- we promise to make the users!
- @${REINPLACE_CMD} \
- -e 's#^MM_FIND_\([^_]*\)_NAME.*#MAILMAN_\1=$${\1NAME}#' \
- ${WRKSRC}/configure.in
+
+pre-configure::
+# Mailman's configure script needs the "mailman" user/group to exist, so
+# $PKGINSTALL has to be patched before the do-configure target executes.
@${SED} \
- -e 's#%%USER%%#${MM_USERNAME}#g' \
- -e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' \
- ${MASTERDIR}/pkg-install > ${PKGINSTALL}
+ -e 's#%%USER%%#${MM_USERNAME}#g' -e 's#%%UID%%#${MM_USERID}#g' \
+ -e 's#%%GROUP%%#${MM_GROUPNAME}#g' -e 's#%%GID%%#${MM_GROUPID}#g' \
+ -e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' ${MASTERDIR}/pkg-install > \
+ ${PKGINSTALL}
+ @${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
+
+post-configure:
@${SED} \
-e 's#%%USER%%#${MM_USERNAME}#g' -e 's#%%GROUP%%#${MM_GROUPNAME}#g' \
-e 's#%%PREFIX%%#${PREFIX}#g' -e 's#%%MAILMANDIR%%#${MAILMANDIR}#g' \
${MASTERDIR}/pkg-deinstall > ${PKGDEINSTALL}
+# port system auditors complain if dir is created prior to install
+# but configure demands it be there. we delete it now if empty,
+# so it will be re-created. For existing installs, this is ignored
+ @- ${RMDIR} ${MAILMANDIR} 2> /dev/null
+
+pre-install:
+ @${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
post-install:
@${RM} -f ${MAILMANDIR}/pythonlib/*.egg-info
diff --git a/mail/mailman/pkg-deinstall b/mail/mailman/pkg-deinstall
index 48ad970113fc..05972ee6ebc5 100644
--- a/mail/mailman/pkg-deinstall
+++ b/mail/mailman/pkg-deinstall
@@ -23,6 +23,10 @@ DEINSTALL)
echo "---> /usr/bin/crontab -u "%%USER%%" -r"
fi
+ echo "---> Stopping Mailman's qrunner daemon"
+ %%PREFIX%%/etc/rc.d/mailman.sh stop >/dev/null 2>&1
+ /bin/sleep 2
+
echo "---> Preserving the \"last_mailman_version\" file"
/bin/cp -f %%MAILMANDIR%%/data/last_mailman_version /var/tmp/
@@ -47,6 +51,10 @@ POST-DEINSTALL)
/bin/mv -f /var/tmp/last_mailman_version %%MAILMANDIR%%/data/
fi
+ echo '---> - If you are not using Mailman any more, you should manually delete'
+ echo '---> - the "%%USER%%" user and "%%GROUP%%" group.'
+ echo '---> - You may delete them with "pw groupdel %%GROUP%%; pw userdel %%USER%%".'
+
;;
esac
diff --git a/mail/mailman/pkg-install b/mail/mailman/pkg-install
index 11add7d3e514..2441fa532116 100644
--- a/mail/mailman/pkg-install
+++ b/mail/mailman/pkg-install
@@ -6,11 +6,49 @@ PATH=/bin:/usr/bin:/usr/sbin
case $2 in
+PRE-INSTALL)
+ echo "---> Starting install script:"
+
+ if [ -z "%%MAILMANDIR%%" -o \
+ -z "%%USER%%" -o -z "%%GROUP%%" -o \
+ -z "%%UID%%" -o -z "%%GID%%" ]; then
+ echo "ERROR: A required pragma was empty"
+ exit 1
+ fi
+
+ # Create group if required
+ if pw group show "%%GROUP%%" >/dev/null 2>&1; then
+ echo "---> Using existing group \"%%GROUP%%\""
+ else
+ echo "---> Adding group \"%%GROUP%%\" (%%GID%%)"
+ /usr/sbin/pw groupadd %%GROUP%% -g %%GID%% || exit 1
+ fi
+
+ # Create user if required
+ if pw user show "%%USER%%" >/dev/null 2>&1; then
+ echo "---> Using existing user \"%%USER%%\""
+ else
+ echo "---> Adding user \"%%USER%%\" (%%UID%%)"
+ pw useradd "%%USER%%" -u "%%UID%%" -g "%%GROUP%%" -h - \
+ -d "%%MAILMANDIR%%" -s "/sbin/nologin" -c "Mailman Owner" || exit 1
+ fi
+
+ # Create home directory if required
+ if [ -d "%%MAILMANDIR%%" ]; then
+ echo "---> Using existing Mailman directory (%%MAILMANDIR%%)"
+ echo " (There may be existing active mailing lists - this installation will"
+ echo " attempt to preserve them.)"
+ else
+ echo "---> Creating Mailman directory (%%MAILMANDIR%%)"
+ (umask 002 && /bin/mkdir -p "%%MAILMANDIR%%") || exit 1
+ /usr/sbin/chown -R "%%USER%%:%%GROUP%%" "%%MAILMANDIR%%" || exit 1
+ /bin/chmod g+s "%%MAILMANDIR%%" || exit 1
+ fi
+ ;;
+
POST-INSTALL)
echo "---> Starting post-install script:"
- /bin/chmod g+s "%%MAILMANDIR%%" || exit 1
-
echo "---> Checking crontab(5) file for user \"%%USER%%\""
if [ -e /var/cron/allow ]; then
diff --git a/mail/mailman/pkg-plist b/mail/mailman/pkg-plist
index cd9b880e03ff..71e6af4cac62 100644
--- a/mail/mailman/pkg-plist
+++ b/mail/mailman/pkg-plist
@@ -1,5 +1,4 @@
@comment $FreeBSD$
-@stopdaemon mailman
@unexec if cmp -s %D/%%MMDIR%%/Mailman/mm_cfg.py %D/%%MMDIR%%/Mailman/mm_cfg.py.dist; then rm -f %D/%%MMDIR%%/Mailman/mm_cfg.py; fi
@unexec rm -f %D/%%MMDIR%%/Mailman/mm_cfg.pyc
@exec mkdir -p %D/%%MMDIR%%/archives