aboutsummaryrefslogtreecommitdiffstats
path: root/mail/sympa
diff options
context:
space:
mode:
authorcrees <crees@FreeBSD.org>2013-03-15 03:14:47 +0800
committercrees <crees@FreeBSD.org>2013-03-15 03:14:47 +0800
commit25a2fb660a7c8dacb9dccafa031bbdb55dccb58f (patch)
tree8014d9d9e820972c346d63eb6900d7aee9201dc7 /mail/sympa
parent1f61a724c45a51e0fbf9a4f92d75cf30b5322ad7 (diff)
downloadfreebsd-ports-gnome-25a2fb660a7c8dacb9dccafa031bbdb55dccb58f.tar.gz
freebsd-ports-gnome-25a2fb660a7c8dacb9dccafa031bbdb55dccb58f.tar.zst
freebsd-ports-gnome-25a2fb660a7c8dacb9dccafa031bbdb55dccb58f.zip
Add new rc script for sympa
PR: ports/176475 Submitted by: Eimar Koort <eimar.koort@gmail.com>
Diffstat (limited to 'mail/sympa')
-rw-r--r--mail/sympa/Makefile7
-rw-r--r--mail/sympa/files/patch-src-etc-script-Makefile.in11
-rw-r--r--mail/sympa/files/patch-src__etc__script__sympa.in38
-rw-r--r--mail/sympa/files/sympa.in211
-rw-r--r--mail/sympa/pkg-plist1
5 files changed, 228 insertions, 40 deletions
diff --git a/mail/sympa/Makefile b/mail/sympa/Makefile
index 442d22ae497a..57e868f111cc 100644
--- a/mail/sympa/Makefile
+++ b/mail/sympa/Makefile
@@ -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/
@@ -52,7 +53,6 @@ CONFIGURE_ARGS+=--bindir=${PREFIX}/libexec/${PORTNAME} \
--with-confdir=${PREFIX}/etc \
--with-docdir=${EXAMPLESDIR} \
--with-expldir=${DATADIR}/list_data \
- --with-iconsdir=${PREFIX}/${ICONSDIR} \
--with-initdir=${PREFIX}/etc/rc.d \
--with-lockdir=/var/spool/lock \
--with-modulesdir=${PREFIX}/libexec/${PORTNAME} \
@@ -63,6 +63,8 @@ CONFIGURE_ENV+= lt_cv_sys_max_cmd_len=${CONFIGURE_MAX_CMD_LEN}
MAKE_ENV?= PERL_EXTUTILS_AUTOINSTALL=--skip
SUB_FILES= pkg-install
+USE_RC_SUBR= sympa
+
.if !defined(WITHOUT_NLS)
USE_GETTEXT= yes
PLIST_SUB+= NLS=""
@@ -87,6 +89,7 @@ DB_TYPE:= ${DB_TYPE:U}
. for option in ${OPTIONS_RADIO_DATABASE}
. if ${DB_TYPE} == ${option:S,PGSQL,PG,}
OPTIONS_SET+= ${option}
+.warning You need to replace your DB_TYPE variable in make.conf with OPTIONS_SET+=${option}
. endif
. endfor
.endif
@@ -104,10 +107,12 @@ RUN_DEPENDS+= ${LOCALBASE}/${APACHEMODDIR}/mod_fastcgi.so:${PORTSDIR}/www/mod_fa
.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 --git a/mail/sympa/files/patch-src-etc-script-Makefile.in b/mail/sympa/files/patch-src-etc-script-Makefile.in
new file mode 100644
index 000000000000..d54f791b51bc
--- /dev/null
+++ b/mail/sympa/files/patch-src-etc-script-Makefile.in
@@ -0,0 +1,11 @@
+--- src/etc/script/Makefile.in.orig 2013-03-13 18:06:41.202599651 +0000
++++ src/etc/script/Makefile.in 2013-03-13 18:06:05.882611401 +0000
+@@ -355,7 +355,7 @@
+
+ info-am:
+
+-install-data-am: install-initSCRIPTS install-scriptSCRIPTS
++install-data-am: install-scriptSCRIPTS
+
+ install-exec-am:
+
diff --git a/mail/sympa/files/patch-src__etc__script__sympa.in b/mail/sympa/files/patch-src__etc__script__sympa.in
deleted file mode 100644
index ebeba9ccc050..000000000000
--- a/mail/sympa/files/patch-src__etc__script__sympa.in
+++ /dev/null
@@ -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 --git a/mail/sympa/files/sympa.in b/mail/sympa/files/sympa.in
new file mode 100644
index 000000000000..1b89654788ef
--- /dev/null
+++ b/mail/sympa/files/sympa.in
@@ -0,0 +1,211 @@
+#!/bin/sh
+#
+# PROVIDE: sympa
+# REQUIRE: LOGIN cleanvar %%REQ_MYSQL%% %%REQ_PGSQL%%
+# KEYWORD: shutdown
+#
+# $FreeBSD$
+#
+# 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
+rcvar=sympa_enable
+
+load_rc_config $name
+
+: ${sympa_enable:=no}
+
+start_cmd=sympa_start
+stop_cmd=sympa_stop
+status_cmd=sympa_status
+extra_commands=status
+
+sympadir=%%PREFIX%%/libexec/sympa
+
+sympaconf=%%PREFIX%%/etc/sympa.conf
+wwsympaconf=%%PREFIX%%/etc/wwsympa.conf
+
+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
+}
+
+sub_module_start()
+{
+ # Start a module
+ if [ $# = 0 ] ; then
+ echo "Usage: sub_module_start {program}"
+ return 1
+ fi
+ $sympadir/$1.pl $startparam && echo "success" || echo "failure"
+ echo
+}
+
+sub_start()
+{
+ # Test state of module before startup
+ 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
+}
+
+sub_stop()
+{
+ # Stop a module
+ 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
+}
+
+sympa_check_config()
+{
+ # Check config files
+ [ -d $sympadir ] || exit 0
+ [ -f $sympaconf ] || exit 0
+ [ -f $wwsympaconf ] || exit 0
+}
+
+sympa_start()
+{
+ sympa_check_config
+ 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()
+{
+ sympa_check_config
+ 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
+}
+
+run_rc_command $1
diff --git a/mail/sympa/pkg-plist b/mail/sympa/pkg-plist
index c6bc0d82abe0..6598e3b89c06 100644
--- a/mail/sympa/pkg-plist
+++ b/mail/sympa/pkg-plist
@@ -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