Package-Name: mailman
Requires: python
Homepage: http://www.list.org/
Source: gnu:///mailman/mailman-(\d+.\d+(.\d+)?).(tar.gz|tgz) $1
No-Chown: 1
Zap-Before-Install: 1
Repack:
	tar xzvfp "$(SOURCE)"
# Package options affecting compilation:
# -omailgid=###   GID mail programs run as (default: GID of group "mail")
# -ocgigid=###    GID CGI programs run as (default: GID of group "nogroup")
# -ocgiext=.XXX   Extension required for CGI programs (including dot)
#                    (default: none)
Compile:
	cp -pf ACK* BUGS FAQ INSTALL NEWS README* TODO UPGRADING "$(PREFIX)/"
# FIXME: generic rule to add a user/group like this?
# FIXME: we don't want to touch /etc in Compile but configure requires it
	if ! grep -q '^mailman:' /etc/passwd ; then \
		export i=20 j=0 ; \
		while grep -q '^[^:]*:[^:]*:'$$i /etc/passwd ; do \
			i=$$[i+1] ; \
		done ; \
		if grep -q '^mailman:' /etc/group ; then \
			j=`grep '^mailman:' /etc/group | cut -d: -f3` ; \
		else \
			j=$$i ; \
			while grep -q '^[^:]*:[^:]*:'$$j /etc/group ; do \
				j=$$[j+1] ; \
			done ; \
			echo >>/etc/group "mailman::$$j:" ; \
		fi ; \
		echo >>/etc/passwd "mailman:x:$$i:$$j:mailman:$(PREFIX):/bin/false" ; \
	fi
	test -d "$(PREFIX)"/var -a \! -h "$(PREFIX)"/var || rm -f "$(PREFIX)"/var
	mkdir -p "$(PREFIX)"/var
	chown mailman.mailman "$(PREFIX)" "$(PREFIX)"/var
	chmod 2775 "$(PREFIX)" "$(PREFIX)"/var
	MAILGID="" ; CGIGID="" ; CGIEXT="" ; \
	if [ "$(PKGOPT_mailgid)" ] ; then \
		MAILGID="--with-mail-gid=$(PKGOPT_mailgid)" ; \
	else \
		a=`grep ^mail: /etc/group | head -1` ; \
		if [ "$$a" ] ; then \
			gid=`echo "$$a" | cut -d: -f3` ; \
			MAILGID="--with-mail-gid=$$gid" ; \
		fi ; \
	fi ; \
	if [ "$(PKGOPT_cgigid)" ] ; then \
		CGIGID="--with-cgi-gid=$(PKGOPT_cgigid)" ; \
	else \
		a=`grep ^nogroup: /etc/group | head -1` ; \
		if [ "$$a" ] ; then \
			gid=`echo "$$a" | cut -d: -f3` ; \
			CGIGID="--with-cgi-gid=$$gid" ; \
		fi ; \
	fi ; \
	if [ "$(PKGOPT_cgiext)" ] ; then \
		CGIEXT="--with-cgi-ext='$(PKGOPT_cgiext)'" ; \
	fi ; \
	$(MAKE) -f ../Makefile configure CONFIGURE_OPTS="--with-var-prefix="$(PREFIX)/var" $$MAILGID $$CGIGID $$CGIEXT"
	umask 022 && $(MAKE)
	umask 022 && $(MAKE) install
Install:
	mkdir -p /var/mailman
	chown mailman.mailman /var/mailman
	chmod 2775 /var/mailman
	for i in `cd "$(PREFIX)"/var ; find . -type d \! -name . \! -name ..` ; do \
		mkdir -p /var/mailman/"$$i" ; \
		chown mailman.mailman /var/mailman/"$$i" ; \
		chmod 2775 /var/mailman/"$$i" ; \
	done
	chmod 2770 /var/mailman/archives/private
	test -f /var/mailman/data/last_mailman_version || mv -f "$(PREFIX)"/var/data/last_mailman_version /var/mailman/data/
	mv -f "$(PREFIX)"/var/data/sitelist.cfg /var/mailman/data/sitelist.cfg.dist
	rm -rf "$(PREFIX)"/var
	ln -s /var/mailman "$(PREFIX)"/var
	rm -f /etc/rc.d/init.d/mailman
	echo >>/etc/rc.d/init.d/mailman '#!/bin/sh'
	echo >>/etc/rc.d/init.d/mailman 'cd $(PREFIX)'
	echo >>/etc/rc.d/init.d/mailman 'exec bin/mailmanctl "$@"'
	chmod 700 /etc/rc.d/init.d/mailman
Patch: <<EOT
--- configure.old	2003-04-22 12:34:49 +0900
+++ configure	2003-09-16 19:09:47 +0900
@@ -1399,7 +1399,7 @@
 for group in "$with_mail_gid".split():
     try:
         try:
-            gname = grp.getgrgid(int(group))[0]
+            gname = grp.getgrgid(int(group))[2]
             break
         except ValueError:
             gname = grp.getgrnam(group)[0]
@@ -1459,7 +1459,7 @@
 for group in "$with_cgi_gid".split():
     try:
         try:
-            gname = grp.getgrgid(int(group))[0]
+            gname = grp.getgrgid(int(group))[2]
             break
         except ValueError:
             gname = grp.getgrnam(group)[0]
--- configure.in.old	2003-04-22 12:34:51 +0900
+++ configure.in	2003-09-16 19:10:54 +0900
@@ -221,7 +221,7 @@
 for group in "$2".split():
     try:
         try:
-            gname = grp.getgrgid(int(group))[0]
+            gname = grp.getgrgid(int(group))[2]
             break
         except ValueError:
             gname = grp.getgrnam(group)[0]
--- bin/mailmanctl.old	2003-02-08 16:13:51 +0900
+++ bin/mailmanctl	2003-09-16 19:32:22 +0900
@@ -283,8 +283,14 @@
     # If we're running as root (uid == 0), coerce the uid and gid to that
     # which Mailman was configured for, and refuse to run if we didn't coerce
     # the uid/gid.
-    gid = grp.getgrnam(mm_cfg.MAILMAN_GROUP)[2]
-    uid = pwd.getpwnam(mm_cfg.MAILMAN_USER)[2]
+    try:
+        gid = int(mm_cfg.MAILMAN_GROUP)
+    except ValueError:
+        gid = grp.getgrnam(mm_cfg.MAILMAN_GROUP)[2]
+    try:
+        uid = int(mm_cfg.MAILMAN_USER)
+    except ValueError:
+        uid = pwd.getpwnam(mm_cfg.MAILMAN_USER)[2]
     myuid = os.getuid()
     if myuid == 0:
         os.setgid(gid)
--- src/common.c.old	2002-09-05 10:29:57 +0900
+++ src/common.c	2003-09-16 19:40:17 +0900
@@ -123,6 +123,8 @@
 	char* option;
 	char* server;
 	char* wrapper;
+	char* endptr;
+	int parentgid;
 
 	if (running_as_cgi) {
 		option = "--with-cgi-gid";
@@ -135,6 +137,23 @@
 		wrapper = "mail";
 	}
 
+	parentgid = strtol(parentgroup, &endptr, 10);
+	if (!*endptr) {
+		/* The `parentgroup' string was really an integer */
+		if (parentgid != mygid)
+			fatal(ident, GROUP_MISMATCH,
+			      "Group mismatch error.  Mailman expected the\n"
+			      "%s wrapper script to be executed as group %d,\n"
+			      "but the system's %s server executed the %s\n"
+			      "script as group %d.  Try tweaking the %s\n"
+			      "server to run the script as group %d, or\n"
+			      "re-run configure, providing the command line\n"
+			      "option `%s=%s'.",
+			      wrapper, parentgid, server, wrapper, mygid,
+			      server, parentgid, option, mygid);
+		return;  /* Skip group name checks */
+	}
+
 	if (!mygroup)
 		fatal(ident, GROUP_NAME_NOT_FOUND,
 		      "Failure to find group name %s.  Try adding this group\n"
EOT

-/pkg/mailman/Mailman/mm_cfg.py
-/var/mailman/
/etc/rc.d/init.d/mailman
/pkg/mailman/
/var/mailman/
