Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Feb 2013 10:26:23 GMT
From:      Eimar Koort <eimar.koort@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/176475: rewritten sympa startup script to make it freebsd compatible
Message-ID:  <201302271026.r1RAQNgg063503@red.freebsd.org>
Resent-Message-ID: <201302271030.r1RAU0fx061432@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         176475
>Category:       ports
>Synopsis:       rewritten sympa startup script to make it freebsd compatible
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Wed Feb 27 10:30:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Eimar Koort
>Release:        
>Organization:
>Environment:
>Description:
With original sympa startup script services were not started after boot. 

So i took the liberty, removed non-freebsd stuff from there and made it more suitable for FreeBSD (rc.conf: sympa_enable="YES")

Also made it start after mysql or postgresql. Otherwise it won't start properly.

OTOH i'm not sure what happends when e.g. mysql is requirement in order to start but mysql server is not runnig on localhost.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -ruN sympa.orig/Makefile sympa/Makefile
--- sympa.orig/Makefile	2013-02-16 15:49:31.000000000 +0200
+++ sympa/Makefile	2013-02-27 11:55:31.000000000 +0200
@@ -3,6 +3,7 @@
 
 PORTNAME=	sympa
 PORTVERSION=	6.1.17
+PORTREVISION=   1
 CATEGORIES=	mail
 MASTER_SITES=	http://www.sympa.org/distribution/ \
 		http://www.sympa.org/distribution/old/
@@ -63,6 +64,8 @@
 MAKE_ENV?=	PERL_EXTUTILS_AUTOINSTALL=--skip
 SUB_FILES=	pkg-install
 
+USE_RC_SUBR?=   sympa
+
 .if !defined(WITHOUT_NLS)
 USE_GETTEXT=	yes
 PLIST_SUB+=	NLS=""
@@ -104,10 +107,12 @@
 .if ${PORT_OPTIONS:MORACLE}
 RUN_DEPENDS+=	p5-DBD-Oracle>=0:${PORTSDIR}/databases/p5-DBD-Oracle
 .elif ${PORT_OPTIONS:MPGSQL}
+SUB_LIST+=              REQ_MYSQL="" REQ_PGSQL=postgresql
 RUN_DEPENDS+=	p5-DBD-Pg>=0:${PORTSDIR}/databases/p5-DBD-Pg
 .elif ${PORT_OPTIONS:MSYBASE}
 RUN_DEPENDS+=	p5-DBD-Sybase>=0:${PORTSDIR}/databases/p5-DBD-Sybase
 .elif ${PORT_OPTIONS:MMYSQL}
+SUB_LIST+=              REQ_MYSQL=mysql REQ_PGSQL=""
 RUN_DEPENDS+=	p5-DBD-mysql>=0:${PORTSDIR}/databases/p5-DBD-mysql
 .endif
 
diff -ruN sympa.orig/files/patch-src__etc__script__sympa.in sympa/files/patch-src__etc__script__sympa.in
--- sympa.orig/files/patch-src__etc__script__sympa.in	2012-07-11 09:29:44.000000000 +0300
+++ sympa/files/patch-src__etc__script__sympa.in	1970-01-01 03:00:00.000000000 +0300
@@ -1,38 +0,0 @@
---- src/etc/script/sympa.in.orig	2010-11-17 08:25:42.000000000 +0100
-+++ src/etc/script/sympa.in	2012-04-20 12:35:40.000000000 +0200
-@@ -2,6 +2,10 @@
- #
- # sympa			Mailing Lists Management System
- #
-+# PROVIDE: sympa
-+# REQUIRE: LOGIN cleanvar
-+# KEYWORD: shutdown
-+#
- # Written by Michel Bouissou  20/07/2000
- #
- # Modified by Olivier Salaun 27/07/2000
-@@ -159,7 +163,7 @@
- 	if [ "$pids" != "" ]; then
- 	    for pid in $pids; do
- 		killcount=0
--		running=`ps -A | grep "$pid ..* $1\\.pl"`
-+		running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
- 		while [ "$running" != "" ]; do
- 		    if [ $killcount -gt 10 ]; then
- 			if [ ${use_functions} ]; then
-@@ -171,13 +175,13 @@
- 		    fi
- 
- 		    kill -TERM $pid >/dev/null 2>&1
--		    running=`ps -A | grep "$pid ..* $1\\.pl"`
-+		    running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
- 		    if [ "$running" = "" ]; then
- 			runcount=`expr $runcount + 1`
- 			break
- 		    fi
- 		    sleep 2
--		    running=`ps -A | grep "$pid ..* $1\\.pl"`
-+		    running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
- 		    if [ "$running" = "" ]; then
- 			runcount=`expr $runcount + 1`
- 			break
diff -ruN sympa.orig/files/sympa.in sympa/files/sympa.in
--- sympa.orig/files/sympa.in	1970-01-01 03:00:00.000000000 +0300
+++ sympa/files/sympa.in	2013-02-27 11:36:01.000000000 +0200
@@ -0,0 +1,207 @@
+#!/bin/sh
+#
+# sympa			Mailing Lists Management System
+#
+# PROVIDE: sympa
+# REQUIRE: LOGIN cleanvar %%REQ_MYSQL%% %%REQ_PGSQL%% 
+# KEYWORD: shutdown
+#
+# Written by Michel Bouissou  20/07/2000
+#
+# Modified by Olivier Salaun 27/07/2000
+#    - translations
+#    - lang parameter deleted (defined in sympa.conf)
+#    - introduced --VARS-- parsed by Makefile
+#    - no more sympauser since sympa sets its UID
+# Modified by Michel Bouissou  27/07/2000
+# Modified by Eimar Koort 27/02/2013
+# 	- optimized for FreeBSD
+#
+# sympa_enable  (bool):   Set to NO by default.
+#                Set it to YES to enable sympa.
+#
+
+. /etc/rc.subr
+
+name="sympa"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+extra_commands="status"
+rcvar=sympa_enable
+
+load_rc_config $name
+
+sympadir="%%PREFIX%%/libexec/sympa"
+
+# Sympa config files directory
+sympaconf="%%PREFIX%%/etc/sympa.conf"
+wwsympaconf="%%PREFIX%%/etc/wwsympa.conf"
+
+# Current state of the module
+sub_status() {
+        # Test syntax.
+        if [ $# = 0 ] ; then
+                echo "Usage: sub_status {program}"
+                return 1
+        fi
+       # First try "/u1/home/sympa/*.pid" files
+       if [ -f /var/run/sympa/$1.pid ] ; then
+                pid=`head -1 /var/run/sympa/$1.pid | tr -s ' ' '|'`
+                if [ "$pid" != "" ] ; then
+                        running=`ps -A | egrep "$pid"`
+                        if [ "$running" != "" ]; then
+                                echo "$1 (pid(s) $pid) is active..."
+                                return 0
+                        else
+                                echo "$1 died, pid file remains."
+                                return 1
+                        fi
+                fi
+        fi
+        echo "$1 is stopped."
+        return 3
+}
+# Start a module
+sub_module_start() {
+	if [ $# = 0 ] ; then
+		echo "Usage: sub_module_start {program}"
+		return 1
+	fi
+	$sympadir/$1.pl $startparam && echo "success" || echo "failure"
+	echo
+}
+
+# Test state of module before startup
+sub_start() {
+	if [ $# = 0 ] ; then
+		echo "Usage: sub_start {program}"
+		return 1
+	fi
+	sub_status $1 > /dev/null
+	case "$?" in
+		3)
+			echo $echo_opt "Starting module $1.pl: "
+			sub_module_start $1
+			;;
+		1) 
+			echo $echo_opt "Starting $1, overwriting old pid file."
+			sub_module_start $1
+			;;
+		0)
+			echo "$1 seems active. No action will be taken."
+			echo "Try \"sympa status\" or \"sympa restart"\".
+			;;
+	esac
+}
+
+# Stop a module
+sub_stop() {
+    if [ $# = 0 ] ; then
+        echo "Usage: sub_stop {program}"
+        return 1
+    fi
+ 
+    if [ -f /var/run/sympa/$1.pid ]; then
+	echo $echo_opt "Stopping module $1.pl: "
+	pids=`head -1 /var/run/sympa/$1.pid`
+	runcount=0
+	if [ "$pids" != "" ]; then
+	    for pid in $pids; do
+		killcount=0
+		running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
+		while [ "$running" != "" ]; do
+		    if [ $killcount -gt 10 ]; then
+		        echo 'failure'
+			return 3
+		    fi
+
+		    kill -TERM $pid >/dev/null 2>&1
+		    running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
+		    if [ "$running" = "" ]; then
+			runcount=`expr $runcount + 1`
+			break
+		    fi
+		    sleep 2
+		    running=`ps -A | grep "^[[:space:]]*$pid[[:space:]].*$1\\.pl"`
+		    if [ "$running" = "" ]; then
+			runcount=`expr $runcount + 1`
+			break
+		    fi
+		    killcount=`expr $killcount + 1`
+		done
+	    done
+	fi
+	if [ $runcount -gt 0 ]; then
+		echo 'success'
+	else
+	    echo 'died'
+	fi
+	echo
+    else
+	echo "Module $1.pl not running"
+    fi
+    return 0
+}
+
+# Check config files
+[ -d $sympadir ] || exit 0
+[ -f $sympaconf ] || exit 0
+[ -f $wwsympaconf ] || exit 0
+
+sympa_start() 
+	{
+	if [ ! -f /var/spool/lock/sympa ]; then
+		echo "Starting Sympa subsystem: "
+		sub_start sympa
+		sub_start bulk
+		sub_start archived
+		sub_start bounced
+		sub_start task_manager
+		touch /var/spool/lock/sympa
+		echo
+	else
+
+		echo "Sympa seems active. No action will be taken."
+		echo "Try \"sympa status\" or \"sympa restart"\".
+
+	fi
+	}
+sympa_stop()
+	{
+	echo "Stopping Sympa subsystem: "
+	sub_stop bounced
+	sub_stop archived
+	sub_stop bulk
+	sub_stop sympa
+	if [ -f /var/run/sympa/sympa-creation.pid ]; then
+		sub_stop sympa-creation
+	fi
+	sub_stop task_manager
+	if [ -f /var/spool/lock/sympa ]; then
+		rm -f /var/spool/lock/sympa
+	fi
+	}
+sympa_status()
+        {
+        echo "Status of Sympa subsystem: "
+        if [ -f /var/spool/lock/sympa ]; then
+                echo "Status file for subsystem found."
+        else
+                echo "Status file for subsystem NOT found."
+        fi
+        sub_status sympa
+        sub_status bulk
+        sub_status archived
+        sub_status bounced
+        sub_status task_manager
+        }
+sympa_restart()
+	{
+	echo "Restarting Sympa subsystem: "
+	$0 stop && $0 start
+	echo
+	}
+
+run_rc_command "$1"
+
diff -ruN sympa.orig/pkg-plist sympa/pkg-plist
--- sympa.orig/pkg-plist	2013-02-16 15:49:31.000000000 +0200
+++ sympa/pkg-plist	2013-02-27 09:51:55.000000000 +0200
@@ -1,4 +1,3 @@
-etc/rc.d/sympa
 @comment copyover handled in pkg-install
 @unexec cmp -s %D/etc/sympa.conf.sample %D/etc/sympa.conf && rm -f %D/etc/sympa.conf
 etc/sympa.conf.sample


>Release-Note:
>Audit-Trail:
>Unformatted:



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