Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Nov 2008 17:28:12 GMT
From:      Sean McAfee <smcafee@collaborativefusion.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/128681: Update smstools3 to improve rc script and enable statistics feature
Message-ID:  <200811071728.mA7HSCEf031198@www.freebsd.org>
Resent-Message-ID: <200811071730.mA7HU4VY044911@freefall.freebsd.org>

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

>Number:         128681
>Category:       ports
>Synopsis:       Update smstools3 to improve rc script and enable statistics feature
>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:   Fri Nov 07 17:30:04 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Sean McAfee
>Release:        6.3R-p4
>Organization:
Collaborative Fusion, Inc.
>Environment:
>Description:
The current revision of the port does not allow for building of the statistics gathering feature, likely because attempting to manually build it from source results in an error due to a missing CFLAGS include.

Additionally, the rc script was basic and did not allow for conffile/pidfile/flags knobs via rc.conf (among other issues.)

A patch is attached.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -ruN smstools3.bak/Makefile smstools3/Makefile
--- smstools3/Makefile	2008-10-02 22:35:31.000000000 -0400
+++ smstools3/Makefile	2008-11-07 08:23:58.000000000 -0500
@@ -18,6 +18,8 @@
 
 CONFLICTS=	smstools-2.*
 
+OPTIONS=        STATS "Build status and statistics support" off
+
 WRKSRC=		${WRKDIR}/smstools3
 USE_GMAKE=	yes
 USE_RC_SUBR=	smsd
@@ -50,6 +52,12 @@
 		sms2unicode sms2xml sms3 smsevent smsresend smstest.php \
 		sql_demo unicode2sms
 
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_STATS)
+CFLAGS+= -I${PREFIX}/include
+.endif
+
 post-patch:
 	@${REINPLACE_CMD} 's|%%PREFIX%%|${PREFIX}|g' ${WRKSRC}/install.sh \
 		${WRKSRC}/src/smsd_cfg.c
@@ -57,6 +65,9 @@
 		${WRKSRC}/examples/smsd.conf.easy \
 		${WRKSRC}/examples/smsd.conf.full \
 		${WRKSRC}/examples/smsd.conf.non-root
+.if defined(WITH_STATS)
+	@${REINPLACE_CMD} 's|CFLAGS\ \+\=\ \-D\ NOSTATS|\#CFLAGS\ \+\=\ \-D\ NOSTATS|g' ${WRKSRC}/src/Makefile
+.endif
 
 post-install:
 	@${MKDIR} ${DATADIR}
@@ -78,4 +89,5 @@
 	@${MKDIR} ${EXAMPLESDIR}
 	@${INSTALL_DATA} ${EXAMPLES:S,^,${WRKSRC}/examples/,} ${EXAMPLESDIR}/
 .endif
-.include <bsd.port.mk>
+
+.include <bsd.port.post.mk>
diff -ruN smstools3.bak/files/smsd.in smstools3/files/smsd.in
--- smstools3/files/smsd.in	2008-06-07 12:28:46.000000000 -0400
+++ smstools3/files/smsd.in	2008-11-07 08:23:58.000000000 -0500
@@ -11,24 +11,59 @@
 # smsd_enable="YES"
 #
 smsd_enable=${smsd_enable-"NO"}
+smsd_flags=${smsd_flags-""}
+smsd_pidfile=${smsd_pidfile-"/var/run/smsd.pid"}
+smsd_conffile=${smsd_conffile-"/usr/local/etc/smsd.conf"}
 
-. %%RC_SUBR%%
+
+. /etc/rc.subr
 
 name="smsd"
 rcvar=`set_rcvar`
 load_rc_config $name
-pidfile="/var/run/smsd.pid"
-command="%%PREFIX%%/bin/smsd"
-command_args='&'
+command="/usr/local/bin/smsd"
+command_args=''
+
+start_precmd="${name}_prestart"
+stop_cmd="${name}_stop"
 
-# Unfortunally we need to this because as the program won't
+smsd_prestart()
+{
+    echo $smsd_flags | /usr/bin/grep - "-s" > /dev/null
+    if [ $? = 0 ] ; then
+        echo "CRITICAL: \$smsd_flags includes -s option." 
+        echo "Since this prints to stout, it should only be used in foreground mode."
+	return 1
+    else
+        return 0
+    fi
+}
+
+# Unfortunately we need to this because as the program won't
 # exit cleanly and the terminal will be stuck forever in waitpid.
-case "$1" in
-	stop)
-		pkill smsd
-		;;
-	*)
-		run_rc_command "$1"
-		;;
-esac
+smsd_stop()
+{
+    if [ -e ${smsd_pidfile} ]; then
+            pkill smsd
+            echo "Stopping smsd."
+	    sleep 5
+    else
+           echo "${name} not running? (check ${smsd_pidfile})."
+           exit 1
+    fi
+}
+
+for conffile in ${smsd_conffile}; do
+        if [ ! -z ${conffile} -a -f ${conffile} ]; then
+               if [ -z ${smsd_conffile_set} ]; then
+                       smsd_conffile_set="${conffile}"
+               else
+                       smsd_conffile_set="${smsd_conffile_set},${conffile}"
+               fi
+        else
+               echo "smsd configuration file $conffile not set or not found."
+               exit 1
+        fi
+done
 
+run_rc_command "$1"


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



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