Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Jan 2015 00:12:46 +0000 (UTC)
From:      Matthias Andree <mandree@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r376446 - in head/mail/mailman: . files
Message-ID:  <201501070012.t070CkRc022662@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mandree
Date: Wed Jan  7 00:12:45 2015
New Revision: 376446
URL: https://svnweb.freebsd.org/changeset/ports/376446
QAT: https://qat.redports.org/buildarchive/r376446/

Log:
  Update rcfile and permission handling.
  
  - Move directory permission handling into pkg-install, to work around
    pkg/libarchive issues on 9.3.
  - Handle some crucial directory permissions directly in pkg-install,
    so that running check_perms becomes optional.
  - Try a bit harder to preserve permissions on the archives/private dir.
  - The rcfile now fixes directory permissions by default on start.
  - You can now set mailman_fix_perms="NO" in the /etc/rc.conf* files,
    to avoid running check_perms -f on start, or from pkg-install.
  - Clean up pkg-plist.
  - Bump PORTREVISION to 6.
  
  Suggested by:	bapt@, peter@

Modified:
  head/mail/mailman/Makefile
  head/mail/mailman/files/mailman.in
  head/mail/mailman/files/pkg-deinstall.in
  head/mail/mailman/files/pkg-install.in
  head/mail/mailman/pkg-plist

Modified: head/mail/mailman/Makefile
==============================================================================
--- head/mail/mailman/Makefile	Tue Jan  6 22:44:54 2015	(r376445)
+++ head/mail/mailman/Makefile	Wed Jan  7 00:12:45 2015	(r376446)
@@ -3,7 +3,7 @@
 
 PORTNAME=	mailman
 DISTVERSION=	2.1.18-1
-PORTREVISION=	5
+PORTREVISION=	6
 CATEGORIES=	mail
 MASTER_SITES=	${MASTER_SITE_GNU} \
 		SF/${PORTNAME}/Mailman%202.1%20%28stable%29/${PORTVERSION} \
@@ -176,7 +176,7 @@ post-install:
 	    -d ${MAILMANDIR}/${dir} ${dir})
 .endfor
 	@${RM} -f ${STAGEDIR}${MAILMANDIR}/pythonlib/*.egg-info
-	@# mm_cfg.py is handled by pkg-plist:
+	@# mm_cfg.py is handled by pkg-plist, no need to archive a copy:
 	@${RM} -f ${STAGEDIR}${MAILMANDIR}/Mailman/mm_cfg.py
 	@${RM} -f ${STAGEDIR}${MAILMANDIR}/Mailman/mm_cfg.pyc
 	@${MKDIR} ${STAGEDIR}${PREFIX}/${IMGDIR}

Modified: head/mail/mailman/files/mailman.in
==============================================================================
--- head/mail/mailman/files/mailman.in	Tue Jan  6 22:44:54 2015	(r376445)
+++ head/mail/mailman/files/mailman.in	Wed Jan  7 00:12:45 2015	(r376446)
@@ -6,9 +6,15 @@
 # REQUIRE: LOGIN
 # KEYWORD: shutdown
 #
-# Add the following lines to /etc/rc.conf to enable mailman:
+# Add the following lines to /etc/rc.conf to enable or configure mailman:
+#
 # mailman_enable (bool):        Set it to "YES" to enable mailman.
 #                               Default is "NO".
+#
+# mailman_fix_perms (bool):     Set it to "NO" to disable running
+#                               check_perms on start or post-install.
+#                               Default is "YES", but this is unsuitable
+#                               for slow machines with many lists.
 
 . /etc/rc.subr
 
@@ -20,6 +26,7 @@ pidfile="%%MAILMANDIR%%/data/master-qrun
 load_rc_config $name
 
 : ${mailman_enable="NO"}
+: ${mailman_fix_perms="YES"}
 
 start_cmd=${name}_start
 stop_cmd=${name}_stop
@@ -27,7 +34,9 @@ status_cmd=${name}_status
 extra_commands="reload status"
 
 mailman_start() {
-	env LC_ALL=C %%MAILMANDIR%%/bin/check_perms
+	if checkyesno mailman_fix_perms ; then 
+	    env LC_ALL=C %%MAILMANDIR%%/bin/check_perms -f
+	fi
 	%%MAILMANDIR%%/bin/mailmanctl -s -q start
 }
 

Modified: head/mail/mailman/files/pkg-deinstall.in
==============================================================================
--- head/mail/mailman/files/pkg-deinstall.in	Tue Jan  6 22:44:54 2015	(r376445)
+++ head/mail/mailman/files/pkg-deinstall.in	Wed Jan  7 00:12:45 2015	(r376446)
@@ -4,7 +4,7 @@
 
 PATH=/bin:/usr/bin:/usr/sbin
 
-case $2 in
+case "$2" in
 DEINSTALL)
   echo "---> Starting deinstall script"
 
@@ -23,7 +23,7 @@ DEINSTALL)
   fi
 
   echo "---> Preserving the \"last_mailman_version\" file"
-  /bin/mv -f "%%MAILMANDIR%%/data/last_mailman_version" /var/tmp/
+  /bin/mv -f "%%MAILMANDIR%%/data/last_mailman_version" /var/tmp/ || :
 
   # If the errorlog is the only existing logfile, delete it.  (If Mailman's
   # qrunner had not been running, then the process of trying to stop the
@@ -34,6 +34,9 @@ DEINSTALL)
     echo "---> Deleting errorlog (It is the only existing logfile.)"
     /bin/rm -f "%%MAILMANDIR%%/logs/error"
   fi
+
+  # attempt removal, but do not care if it is not empty
+  /bin/rmdir "%%MAILMANDIR%%/archives/private/" 2>/dev/null || :
   ;;
 
 POST-DEINSTALL)

Modified: head/mail/mailman/files/pkg-install.in
==============================================================================
--- head/mail/mailman/files/pkg-install.in	Tue Jan  6 22:44:54 2015	(r376445)
+++ head/mail/mailman/files/pkg-install.in	Wed Jan  7 00:12:45 2015	(r376446)
@@ -4,21 +4,76 @@
 
 PATH=/bin:/usr/bin:/usr/sbin
 
-case $2 in
+check_rcfile_fix_perms() {
+    (
+    . /etc/rc.subr
+
+    name="mailman"
+    rcvar=mailman_enable
+
+    load_rc_config $name
+
+    : ${mailman_fix_perms="YES"}
+
+    checkyesno mailman_fix_perms
+    )
+}
+
+set -e
+case "$2" in
 
 POST-INSTALL)
   echo "---> Starting post-install script"
   LC_ALL=C
   export LC_ALL
 
-  MYTMP="$(mktemp -d "${TMPDIR-/tmp}/mminstall.XXXXXXXXXX")" || exit 1
+  MYTMP="$(mktemp -d "${TMPDIR-/tmp}/mminstall.XXXXXXXXXX")"
   trap "rm -rf \"$MYTMP\"" EXIT
 
-  /bin/chmod g+s "%%MAILMANDIR%%" || exit 1
+  # fix up permissions - this is under investigation; pkg or libarchive
+  # goof up the group writable and/or setgid bits
+  /bin/chmod 02770 "%%MAILMANDIR%%/qfiles"
+  /bin/chmod 02775 "%%MAILMANDIR%%" \
+    "%%MAILMANDIR%%/Mailman" \
+    "%%MAILMANDIR%%/bin" \
+    "%%MAILMANDIR%%/cgi-bin" \
+    "%%MAILMANDIR%%/icons" \
+    "%%MAILMANDIR%%/mail" \
+    "%%MAILMANDIR%%/scripts" \
+    "%%MAILMANDIR%%/tests" \
+    "%%MAILMANDIR%%/pythonlib" \
+    "%%MAILMANDIR%%/spam" \
+    "%%MAILMANDIR%%/locks" \
+    "%%MAILMANDIR%%/Mailman/Archiver" \
+    "%%MAILMANDIR%%/Mailman/Bouncers" \
+    "%%MAILMANDIR%%/Mailman/Cgi" \
+    "%%MAILMANDIR%%/Mailman/Commands" \
+    "%%MAILMANDIR%%/Mailman/Gui" \
+    "%%MAILMANDIR%%/Mailman/Handlers" \
+    "%%MAILMANDIR%%/Mailman/Logging" \
+    "%%MAILMANDIR%%/Mailman/MTA" \
+    "%%MAILMANDIR%%/Mailman/Queue" \
+    "%%MAILMANDIR%%/tests/bounces" \
+    "%%MAILMANDIR%%/tests/msgs" \
+    "%%MAILMANDIR%%/cron" \
+    "%%MAILMANDIR%%/data" \
+    "%%MAILMANDIR%%/lists" \
+    "%%MAILMANDIR%%/archives" \
+    "%%MAILMANDIR%%/archives/public"
+  # this can be 2770 or 2771 but should not be stomped over
+  test -d "%%MAILMANDIR%%/archives/private" \
+  || /usr/bin/install -d -m 02771 \
+	"%%MAILMANDIR%%/archives/private" -g "%%GROUP%%"
+
+  /bin/chmod u+rwx,g+srwx      "%%MAILMANDIR%%/archives/private"
+  /bin/chmod u+rwx,g+srwx,o+rx "%%MAILMANDIR%%/logs"
+
+  /usr/bin/find "%%MAILMANDIR%%/messages" "%%MAILMANDIR%%/templates" -type d \
+    -exec chmod 02775 '{}' +
 
   echo "---> Running update"
 
-  LC_ALL=C "%%MAILMANDIR%%/bin/update" || exit 1
+  LC_ALL=C "%%MAILMANDIR%%/bin/update"
 
   echo "---> Checking crontab(5) file for user \"%%USER%%\""
 
@@ -34,24 +89,28 @@ POST-INSTALL)
           echo "--->     %%MAILMANDIR%%/cron/crontab.in"
       else
           echo "---> Installing crontab(5) file for user \"%%USER%%\""
-          /usr/bin/crontab -u "%%USER%%" "%%MAILMANDIR%%/cron/crontab.in" || exit 1
+          /usr/bin/crontab -u "%%USER%%" "%%MAILMANDIR%%/cron/crontab.in"
       fi
   else
       echo "---> Creating crontab(5) file for user \"%%USER%%\""
-      /usr/bin/crontab -u "%%USER%%" "%%MAILMANDIR%%/cron/crontab.in" || exit 1
+      /usr/bin/crontab -u "%%USER%%" "%%MAILMANDIR%%/cron/crontab.in"
   fi
   rm -f "$MYTMP/crontab"
 
-  echo "---> Checking (and fixing) file and directory permissions"
-  output="$("%%MAILMANDIR%%/bin/check_perms" -f 2>&1)"
-  printf '%s\n' "$output" | egrep -v '^Re-run' || :
+  if check_rcfile_fix_perms ; then
+    echo "---> Checking (and fixing) file and directory permissions"
+    output="$("%%MAILMANDIR%%/bin/check_perms" -f 2>&1)" || :
+    printf '%s\n' "$output" | egrep -v '^Re-run' || :
+  else
+    echo "---> rcfile sets mailman_fix_perms to no, skipping check_perms"
+  fi
 
   echo "---> Running assorted other checks"
   if egrep -q "^[ \t]*MTA.*=.*Postfix" "%%MAILMANDIR%%/Mailman/mm_cfg.py" ; then
       # run Postfix-specific checks
       if [ "x`${PKG_PREFIX}/sbin/postconf -h myhostname`" != "xlocalhost" ] \
-	  && ! egrep "^[ \t]*SMTPHOST.*=.*`${PKG_PREFIX}/sbin/postconf -h myhostname`" \
-	    "%%MAILMANDIR%%/Mailman/mm_cfg.py" 
+	  && ! egrep -q "^[ \t]*SMTPHOST.*=.*`${PKG_PREFIX}/sbin/postconf -h myhostname`" \
+	    "%%MAILMANDIR%%/Mailman/mm_cfg.py"
       then
 	  echo ""
 	  echo "Your Postfix hostname is non-default."
@@ -61,5 +120,4 @@ POST-INSTALL)
       fi
   fi
   ;;
-
 esac

Modified: head/mail/mailman/pkg-plist
==============================================================================
--- head/mail/mailman/pkg-plist	Tue Jan  6 22:44:54 2015	(r376445)
+++ head/mail/mailman/pkg-plist	Wed Jan  7 00:12:45 2015	(r376446)
@@ -2254,128 +2254,10 @@
 %%MMDIR%%/tests/test_smtp.py
 %%MMDIR%%/tests/testall.py
 %%PYTHON_SITELIBDIR%%/mailman-info.txt
-@comment @dir %%PYTHON_SITELIBDIR%%
 @dir %%MMDIR%%/tests/msgs
 @dir %%MMDIR%%/tests/bounces
 @dir %%MMDIR%%/tests
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/zh_TW
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/zh_CN
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/vi
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/uk
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/tr
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/sv
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/sr
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/sl
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/sk
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ru
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ro
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/pt_BR
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/pt
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/pl
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/no
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/nl
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/lt
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ko
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ja
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/it
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ia
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/hu
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/hr
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/he
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/gl
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/fr
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/fi
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/fa
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/eu
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/et
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/es
-@dir(,,02775) %%MMDIR%%/templates/en
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/el
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/de
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/da
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/cs
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ca
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ast
-%%NLS%%@dir(,,02775) %%MMDIR%%/templates/ar
-@dir %%MMDIR%%/templates
 @dir %%MMDIR%%/scripts
-%%NLS%%@dir %%MMDIR%%/messages/ast/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ast
-%%NLS%%@dir %%MMDIR%%/messages/zh_TW/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/zh_TW
-%%NLS%%@dir %%MMDIR%%/messages/zh_CN/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/zh_CN
-%%NLS%%@dir %%MMDIR%%/messages/vi/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/vi
-%%NLS%%@dir %%MMDIR%%/messages/uk/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/uk
-%%NLS%%@dir %%MMDIR%%/messages/tr/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/tr
-%%NLS%%@dir %%MMDIR%%/messages/sv/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/sv
-%%NLS%%@dir %%MMDIR%%/messages/sr/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/sr
-%%NLS%%@dir %%MMDIR%%/messages/sl/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/sl
-%%NLS%%@dir %%MMDIR%%/messages/sk/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/sk
-%%NLS%%@dir %%MMDIR%%/messages/ru/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ru
-%%NLS%%@dir %%MMDIR%%/messages/ro/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ro
-%%NLS%%@dir %%MMDIR%%/messages/pt_BR/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/pt_BR
-%%NLS%%@dir %%MMDIR%%/messages/pt/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/pt
-%%NLS%%@dir %%MMDIR%%/messages/pl/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/pl
-%%NLS%%@dir %%MMDIR%%/messages/no/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/no
-%%NLS%%@dir %%MMDIR%%/messages/nl/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/nl
-%%NLS%%@dir %%MMDIR%%/messages/lt/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/lt
-%%NLS%%@dir %%MMDIR%%/messages/ko/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ko
-%%NLS%%@dir %%MMDIR%%/messages/ja/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ja
-%%NLS%%@dir %%MMDIR%%/messages/it/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/it
-%%NLS%%@dir %%MMDIR%%/messages/ia/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ia
-%%NLS%%@dir %%MMDIR%%/messages/hu/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/hu
-%%NLS%%@dir %%MMDIR%%/messages/hr/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/hr
-%%NLS%%@dir %%MMDIR%%/messages/he/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/he
-%%NLS%%@dir %%MMDIR%%/messages/gl/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/gl
-%%NLS%%@dir %%MMDIR%%/messages/fr/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/fr
-%%NLS%%@dir %%MMDIR%%/messages/fi/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/fi
-%%NLS%%@dir %%MMDIR%%/messages/fa/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/fa
-%%NLS%%@dir %%MMDIR%%/messages/eu/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/eu
-%%NLS%%@dir %%MMDIR%%/messages/et/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/et
-%%NLS%%@dir %%MMDIR%%/messages/es/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/es
-%%NLS%%@dir %%MMDIR%%/messages/el/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/el
-%%NLS%%@dir %%MMDIR%%/messages/de/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/de
-%%NLS%%@dir %%MMDIR%%/messages/da/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/da
-%%NLS%%@dir %%MMDIR%%/messages/cs/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/cs
-%%NLS%%@dir %%MMDIR%%/messages/ca/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ca
-%%NLS%%@dir %%MMDIR%%/messages/ar/LC_MESSAGES
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages/ar
-%%NLS%%@dir(,,02775) %%MMDIR%%/messages
 @dir %%MMDIR%%/mail
 @dir %%MMDIR%%/icons
 @dir %%MMDIR%%/cron
@@ -2399,9 +2281,8 @@
 @dir %%MMDIR%%/lists
 @dir %%MMDIR%%/data
 @dir %%MMDIR%%/archives/public
-@dir(,,02770) %%MMDIR%%/archives/private
+@comment @dir %%MMDIR%%/archives/private
 %%SUB_HTDIG%%@dir %%MMDIR%%/archives/htdig
 @dir %%MMDIR%%/archives
 @dir %%MMDIR%%/Mailman
-@dir(,,02775) %%MMDIR%%
 @group



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501070012.t070CkRc022662>