ports/56658: Convert security/amavisd startup scripts to use rc.subr
Scot W. Hetzel
hetzelsw at westbend.net
Wed Sep 10 00:50:15 UTC 2003
>Number: 56658
>Category: ports
>Synopsis: Convert security/amavisd startup scripts to use rc.subr
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Sep 09 17:50:11 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Scot W. Hetzel
>Release: FreeBSD 4.9-PRERELEASE i386
>Organization:
West Bend Internet
>Environment:
System: FreeBSD WBIw009.westbend.net 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #8: Mon Sep 1 11:51:34 CDT 2003 root at WBIw009.westbend.net:/usr/obj/usr/src/4x/sys/GENERIC-SMP i386
>Description:
Convert security/amavisd startup scripts to use sysutils/rc_subr.
Add PTHREADS_LIBS and PTHREADS_CFLAGS to CONFIGURE_ENV, fixes the
build of amavis-milter to work on -CURRENT. Since, -pthreads was
removed.
NOTE: The configuration of amavisd with milter support (-DWITH_MILTER)
will fail, if either the libsmutil.a (<8.12) or libsm.a (8.12+) is not
installed in /usr/lib. To fix this problem change INTERNALLIB to NOPIC
in /usr/src/lib/libsm/Makefile, then make obj && make && make install.
>How-To-Repeat:
>Fix:
Changed Files:
Makefile
pkg-plist
files/amavisd-milter.sh
files/amavisd.sh
Removed Files:
pkg-plist.milter
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/security/amavisd/Makefile,v
retrieving revision 1.11
diff -u -r1.11 Makefile
--- Makefile 6 Sep 2003 15:59:09 -0000 1.11
+++ Makefile 9 Sep 2003 23:54:44 -0000
@@ -7,6 +7,7 @@
PORTNAME= amavisd
PORTVERSION= 0.1
+PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= security
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
@@ -39,6 +40,9 @@
AMAVISGROUP?= vscan
AMAVISUSER?= vscan
+MILTER_SCRIPT=
+MILTER= "@comment -- no milter script --"
+SBIN_AMAVIS= amavis
SMTPPORT?= 10025
STARTSCRIPT= amavisd.sh
WARNADMIN?= yes
@@ -65,22 +69,52 @@
.elif defined(WITH_MILTER)
CONFIGURE_ARGS+= --enable-milter
MTA?= milter
-PLIST= ${PKGDIR}/pkg-plist.milter
-STARTSCRIPT= amavisd-milter.sh
+MILTER_SCRIPT= amavisd-milter
+MILTER=
+SBIN_AMAVIS= amavis-milter
.else
CONFIGURE_ARGS+= --enable-sendmail
MTA?= sendmail
.endif
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} >= 500038
+RC_SUBR?= ${DESTDIR}/etc/rc.subr
+RC_DIR= ${DESTDIR}/etc/rc.d
+RC_SUFX=
+.else
+USE_RC_SUBR= yes
+RC_DIR= ${PREFIX}/etc/rc.d
+RC_SUFX= .sh
+.endif
+
+CONFIGURE_ENV+= PTHREAD_LIBS=${PTHREAD_LIBS} \
+ PTHREAD_CFLAGS=${PTHREAD_CFLAGS}
+
+RC_SCRIPTS_SUB= AMAVISUSER=${AMAVISUSER} \
+ PREFIX=${PREFIX} \
+ PERL=${PERL} \
+ RC_SUBR=${RC_SUBR}
+
+PLIST_SUB+= SBIN_AMAVIS=${SBIN_AMAVIS} \
+ MILTER=${MILTER} \
+ RC_SUFX=${RC_SUFX} \
+ RC_DIR=${RC_DIR}
+
post-patch:
- @${SED} 's,%%AMAVISUSER%%,${AMAVISUSER},g' ${FILESDIR}/${STARTSCRIPT} > ${WRKSRC}/${STARTSCRIPT}
+.for script in amavisd ${MILTER_SCRIPT}
+ @${SED} ${RC_SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} ${FILESDIR}/${script}.sh > ${WRKSRC}/${script}.sh
+.endfor
@${PERL} -pi.orig -e 's|/etc/amavisd.conf|${PREFIX}/etc/amavisd.conf|g' ${WRKSRC}/configure ${WRKSRC}/amavis/amavisd.in ${WRKSRC}/amavis/Makefile.in
pre-install:
@${SETENV} ${SCRIPTS_ENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${AMAVISUSER} ${AMAVISGROUP}
post-install:
- ${INSTALL_SCRIPT} ${WRKSRC}/${STARTSCRIPT} ${PREFIX}/etc/rc.d
+.for script in amavisd ${MILTER_SCRIPT}
+ ${INSTALL_SCRIPT} ${WRKSRC}/${script}.sh ${RC_DIR}/${script}${RC_SUFX}
+.endfor
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
.for FILE in FAQ INSTALL README README.exim README.milter README.postfix README.qmail README.scanners README.sendmail doc/amavis.html doc/amavis.m4 doc/amavis.png doc/amavis.txt
@@ -91,4 +125,4 @@
@${ECHO} "==============================================================================="
.endif
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
Index: pkg-plist
===================================================================
RCS file: /home/ncvs/ports/security/amavisd/pkg-plist,v
retrieving revision 1.3
diff -u -r1.3 pkg-plist
--- pkg-plist 6 Sep 2003 15:59:09 -0000 1.3
+++ pkg-plist 9 Sep 2003 17:07:17 -0000
@@ -13,6 +13,8 @@
%%PORTDOCS%%%%DOCSDIR%%/amavis.txt
%%PORTDOCS%%@dirrm %%DOCSDIR%%
etc/amavisd.conf
-etc/rc.d/amavisd.sh
-sbin/amavis
+sbin/%%SBIN_AMAVIS%%
sbin/amavisd
+ at cwd %%RC_DIR%%
+%%MILTER%%amavisd-milter%%RC_SUFX%%
+amavisd%%RC_SUFX%%
Index: files/amavisd-milter.sh
===================================================================
RCS file: /home/ncvs/ports/security/amavisd/files/amavisd-milter.sh,v
retrieving revision 1.2
diff -u -r1.2 amavisd-milter.sh
--- files/amavisd-milter.sh 24 May 2002 03:58:28 -0000 1.2
+++ files/amavisd-milter.sh 9 Sep 2003 20:23:16 -0000
@@ -1,31 +1,57 @@
#!/bin/sh
+#
+# $FreeBSD$
+#
-if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then
- echo "$0: Cannot determine the PREFIX" >&2
- exit 1
-fi
-
-case "$1" in
-start)
- ( [ -x ${PREFIX}/sbin/amavisd ] || [ -x ${PREFIX}/sbin/amavis-milter ] ) || exit 1
- AMAVISD=$(/bin/ps -xU %%AMAVISUSER%% | grep amavisd | awk '{ print $1 }')
- AMAVIS_MILTER=$(/bin/ps -xU %%AMAVISUSER%% | grep amavis-milter | awk '{ print $1 }')
- ( /bin/test "$AMAVISD" || /bin/test "$AMAVIS_MILTER" ) && \
- su - %%AMAVISUSER%% -c "/bin/kill $AMAVISD $AMAVIS_MILTER" > /dev/null
- rm -rf /var/amavis/amavis*.sock
- su - %%AMAVISUSER%% -c "${PREFIX}/sbin/amavis-milter -D -p /var/amavis/amavis-milter.sock" > /dev/null
- su - %%AMAVISUSER%% -c ${PREFIX}/sbin/amavisd > /dev/null 2>&1 && echo -n ' amavisd-milter'
- ;;
-stop)
- ( [ -x ${PREFIX}/sbin/amavisd ] || [ -x ${PREFIX}/sbin/amavis-milter ] ) || exit 1
- AMAVISD=$(/bin/ps -xU %%AMAVISUSER%% | grep amavisd | awk '{ print $1 }')
- AMAVIS_MILTER=$(/bin/ps -xU %%AMAVISUSER%% | grep amavis-milter | awk '{ print $1 }')
- ( /bin/test "$AMAVISD" || /bin/test "$AMAVIS_MILTER" ) && \
- su - %%AMAVISUSER%% -c "/bin/kill $AMAVISD $AMAVIS_MILTER" > /dev/null && echo -n ' amavisd-milter'
- ;;
-*)
- echo "Usage: `basename $0` {start|stop}" >&2
- ;;
-esac
+# PROVIDE: amavisd-milter
+# BEFORE: amavisd mail
+# KEYWORD: FreeBSD shutdown
-exit 0
+prefix=%%PREFIX%%
+
+# Define these amavisd_milter_* variables in one of these files:
+# /etc/rc.conf
+# /etc/rc.conf.local
+#
+# DO NOT CHANGE THESE DEFAULT VALUES HERE
+amavisd_milter_enable=no
+amavisd_milter_flags="-D"
+amavisd_milter_user=%%AMAVISUSER%%
+#amavisd_milter_socket="inet:9999 at 127.0.0.1"
+amavisd_milter_socket="local:/var/amavis/amavis-milter.sock"
+
+. %%RC_SUBR%%
+
+name="amavisd_milter"
+rcvar=`set_rcvar`
+start_precmd="amavisd_precmd"
+stop_postcmd="remove_socket"
+command=${prefix}/sbin/amavis-milter
+
+# Remove the AMaViSd Milter Socket
+remove_socket()
+{
+ case ${amavisd_milter_socket} in
+ unix:*|local:*)
+ socket=`echo ${amavisd_milter_socket} | /usr/bin/cut -d: -f2`
+ if [ -S ${socket} ]; then
+ rm -f ${socket}
+ fi
+ ;;
+ /*)
+ if [ -S ${amavisd_milter_socket} ]; then
+ rm -f ${amavisd_milter_socket}
+ fi
+ ;;
+ esac
+}
+
+amavisd_precmd()
+{
+ rc_flags="${rc_flags} -p ${amavisd_milter_socket}"
+
+ remove_socket
+}
+
+load_rc_config $name
+run_rc_command "$1"
Index: files/amavisd.sh
===================================================================
RCS file: /home/ncvs/ports/security/amavisd/files/amavisd.sh,v
retrieving revision 1.3
diff -u -r1.3 amavisd.sh
--- files/amavisd.sh 24 May 2002 03:58:28 -0000 1.3
+++ files/amavisd.sh 9 Sep 2003 15:46:10 -0000
@@ -1,28 +1,41 @@
#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: amavisd
+# BEFORE: mail
+# KEYWORD: FreeBSD shutdown
-if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then
- echo "$0: Cannot determine the PREFIX" >&2
- exit 1
-fi
-
-case "$1" in
-start)
- ( [ -x ${PREFIX}/sbin/amavisd ] || [ -x ${PREFIX}/sbin/amavis-milter ] ) || exit 1
- AMAVISD=$(/bin/ps -xU %%AMAVISUSER%% | grep amavisd | awk '{ print $1 }')
- ( /bin/test "$AMAVISD" ) && \
- su - %%AMAVISUSER%% -c "/bin/kill $AMAVISD" > /dev/null
- rm -rf /var/amavis/amavis*.sock
- su - %%AMAVISUSER%% -c ${PREFIX}/sbin/amavisd > /dev/null 2>&1 && echo -n ' amavisd'
- ;;
-stop)
- ( [ -x ${PREFIX}/sbin/amavisd ] || [ -x ${PREFIX}/sbin/amavis-milter ] ) || exit 1
- AMAVISD=$(/bin/ps -xU %%AMAVISUSER%% | grep amavisd | awk '{ print $1 }')
- ( /bin/test "$AMAVISD") && \
- su - %%AMAVISUSER%% -c "/bin/kill $AMAVISD" > /dev/null && echo -n ' amavisd'
- ;;
-*)
- echo "Usage: `basename $0` {start|stop}" >&2
- ;;
-esac
+prefix=%%PREFIX%%
-exit 0
+# Define these amavisd_milter_* variables in one of these files:
+# /etc/rc.conf
+# /etc/rc.conf.local
+#
+# DO NOT CHANGE THESE DEFAULT VALUES HERE
+amavisd_enable=no
+amavisd_flags=""
+amavisd_user=%%AMAVISUSER%%
+
+. %%RC_SUBR%%
+
+name="amavisd"
+rcvar=`set_rcvar`
+start_precmd="remove_socket"
+stop_postcmd="remove_socket"
+command=${prefix}/sbin/amavisd
+command_arg="> /dev/null 2>&1"
+command_interpreter="%%PERL%%"
+pidfile="/var/amavis/amavisd.pid"
+
+# Remove the AMaViSd Socket
+remove_socket()
+{
+ if [ -S /var/amavis/amavisd.sock ]; then
+ rm -f /var/amavis/amavisd.sock
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list