Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Mar 2009 11:39:02 +0100 (CET)
From:      Jimmy Olgeni <olgeni@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        vivek@khera.org
Subject:   ports/132849: [PATCH] databases/slony1: rework startup script (daemon, rc.subr)
Message-ID:  <200903201039.n2KAd2Gm061029@backoffice.colby.local>
Resent-Message-ID: <200903201040.n2KAe1Oe052883@freefall.freebsd.org>

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

>Number:         132849
>Category:       ports
>Synopsis:       [PATCH] databases/slony1: rework startup script (daemon, 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:   Fri Mar 20 10:40:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Jimmy Olgeni
>Release:        FreeBSD 7.1-RELEASE i386
>Organization:
>Environment:
System: FreeBSD backoffice 7.1-RELEASE FreeBSD 7.1-RELEASE #1: Mon Jan  5 15:38:58 CET
>Description:
Refactor slon.sh to improve support for rc.subr; also start slon
with the daemon(8) utility to detach it from the terminal.

Limit logging by default to avoid overflowing syslog, and remove
some (disabled) debug code.

Port maintainer (vivek@khera.org) is cc'd.

Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:

--- slony1-1.2.15.patch begins here ---
Index: files/slon.conf-sample
===================================================================
RCS file: /home/pcvs/ports/databases/slony1/files/slon.conf-sample,v
retrieving revision 1.1
diff -u -u -r1.1 slon.conf-sample
--- files/slon.conf-sample	24 Jun 2005 11:22:43 -0000	1.1
+++ files/slon.conf-sample	20 Mar 2009 10:35:43 -0000
@@ -3,8 +3,8 @@
 # not all settings are shown here.
 
 syslog 0
-log_level 4
-log_timestamp 1
+log_level 0
+log_timestamp 0
 
 cluster_name sample
 conn_info 'dbname=pgbench user=postgres host=localhost port=5432'
Index: files/slon.sh.in
===================================================================
RCS file: /home/pcvs/ports/databases/slony1/files/slon.sh.in,v
retrieving revision 1.4
diff -u -u -r1.4 slon.sh.in
--- files/slon.sh.in	8 Sep 2007 12:22:49 -0000	1.4
+++ files/slon.sh.in	20 Mar 2009 10:35:43 -0000
@@ -6,13 +6,13 @@
 # $Id$ 
 #
 
-# sed -e 's/%%PREFIX%%/\/usr\/local/g' < slon.in > slon
+# sed -e 's/%%PREFIX%%/\/usr\/local/g' < slon.sh.in > slon
 
 # PROVIDE: slon
 # REQUIRE: postgresql
 # KEYWORD: shutdown
 
-. "/etc/rc.subr"
+. /etc/rc.subr
 
 name="slon"
 rcvar=`set_rcvar`
@@ -20,89 +20,83 @@
 load_rc_config "$name"
 _pidprefix="/var/run/${name}"
 pidfile="${_pidprefix}.pid" # Used as fall-through in event of no profiles
+procname="%%PREFIX%%/bin/slon"
 
 # From global rc.conf(5); if unset, set them here
-[ -z "$slon_enable" ]       && slon_enable="NO"
-[ -z "$slon_profiles" ]     && slon_profiles=""
+[ -z "$slon_enable" ]   && slon_enable="NO"
+[ -z "$slon_profiles" ] && slon_profiles=""
 
-configfile_path="/usr/local/etc/${name}.conf"
-command_args="-f ${configfile_path} -p ${pidfile} &"
+configfile_path="%%PREFIX%%/etc/${name}.conf"
+command_args="-f ${configfile_path}"
 required_files="${configfile_path}"
 
-command="/usr/local/bin/slon"
+isProfile () {
+    local profile
 
-isProfile() {
-        match=0;
-        for curMember in $slon_profiles; do
-                if [ "$curMember" = "$1" ]; then
-                        #echo "DEBUG: Match"
-                        match=1
-                fi
-        done
-        return $match;
+    for profile in $slon_profiles; do
+        if [ "$profile" = "$1" ]; then
+            return 0
+        fi
+    done
+
+    return 1
 }
 
+if [ -n "$2" ]; then
+    if [ "x${slon_profiles}" = "x" ]; then # This checks that profiles are indeed defined
+        echo "$0: extra profile argument ignored, no profiles defined"
+        exit 1
+    fi
 
+    profile="$2" # A profile argument has been given (presumably)
 
-if [ -n "$2" ]; then
-	profile="$2" # A profile argument has been given (presumably)
-	if [ "x${slon_profiles}" != "x" ]; then # This checks that profiles are indeed defined
-		echo "-- Profile: $profile --"
-		# Now let's check to make sure that both the profile, the profile's config path variable, config file exists
-		configfile_default_path="/usr/local/etc/${name}-${profile}.conf"
-		configfile_override_varname="\$${name}_${profile}_configfile" # Basic string substitution gets variable name
-		configfile_override_varname_nop="${name}_${profile}_configfile" # Basic string substitution gets variable name
-		#echo "DEBUG default path: $configfile_default_path"
-		#echo "DEBUG override variable name: $configfile_override_varname";
-		#echo "DEBUG override variable name noprefix: $configfile_override_varname_nop";
-		eval configfile_path=\${$configfile_override_varname_nop:-${configfile_default_path}} # e.g., $configfile_varname="$slon_sex_configfile"
-		#echo "DEBUG final: $configfile_path";
-		isProfile $profile
-		searchForProfile=$?
-		# testing for true
-		if [ ! -r "$configfile_path" -o $searchForProfile -lt 1 ]; then
-			echo "$0: no such profile defined, profile config file defined, or cant read profile config file!";
-			exit 1;
-		fi
-		required_files=${configfile_path}
-		
-		pidfile_default="${_pidprefix}-${profile}.pid"
-		eval pidfile=\${${name}_${profile}_pidfile:-${pidfile_default}}
-
-		command_args="-f ${configfile_path} -p ${pidfile} &"
-		#echo "DEBUG argspre: $command_args"
-		#echo "DEBUG subst: ${name}_${profile}_flags"
-		#eval echo "DEBUG subst: \$${name}_${profile}_flags"
-		#eval echo "DEBUG subst2: command_args=\${${name}_${profile}_flags:-${command_args}}"
-		eval command_args=\${${name}_${profile}_flags:-${command_args}}
-		#echo "DEBUG args: $command_args"
-	else
-		echo "$0: extra profile argument ignored, no profiles defined"
-	fi
-	
+    # Now let's check to make sure that both the profile, the profile's
+    # config path variable, config file exists
+
+    if ! isProfile $profile; then
+        echo "$0: no such profile defined in slon_profiles."
+        exit 1
+    fi
+
+    configfile_default_path="%%PREFIX%%/etc/${name}-${profile}.conf"
+
+    # Basic string substitution gets variable name
+    configfile_varname="${name}_${profile}_configfile"
 
+    eval configfile_path=\${$configfile_varname:-${configfile_default_path}}
+
+    if [ ! -r "$configfile_path" ]; then
+        echo "$0: unable to read configuration file."
+        exit 1
+    fi
+
+    required_files="${configfile_path}"
+    
+    pidfile_default="${_pidprefix}-${profile}.pid"
+    eval pidfile=\${${name}_${profile}_pidfile:-${pidfile_default}}
+
+    command_args="-f ${configfile_path}"
+    eval command_args=\${${name}_${profile}_flags:-${command_args}}
 else
-	# We get to here if $2 is not defined at command line, but we do have profiles
-	# so apply $1 command to all profiles!
-	# This block uses recursion to call ourself with each-profile defined as $2
-	if [ "x${slon_profiles}" != "x" -a "x$1" != "x" ]; then
-		if [ "x$1" != "xrestart" ]; then
-			for profile in ${slon_profiles}; do
-				echo "===> ${name} profile: ${profile}"
-				/usr/local/etc/rc.d/${name} $1 ${profile}
-				retcode="$?"
-				if [ "0${retcode}" -ne 0 ]; then
-					failed="${profile} (${retcode}) ${failed:-}"
-				else
-					success="${profile} ${success:-}"
-				fi
-			done
-			exit 0
-		else
-			restart_precmd=""
-		fi
-	fi
+    # We get to here if $2 is not defined at command line, but we do have profiles
+    # so apply $1 command to all profiles!
+    # This block uses recursion to call ourself with each-profile defined as $2.
+
+    if [ "x${slon_profiles}" != "x" -a "x$1" != "x" ]; then
+        for profile in ${slon_profiles}; do
+            echo "Processing ${name} profile: ${profile}"
+            %%PREFIX%%/etc/rc.d/${name} $1 ${profile}
+        done
+        exit 0
+    fi
 # else = no profile argument given
 fi
 
+slon_start () {
+    echo "Starting ${name}."
+    /usr/sbin/daemon -cf -p ${pidfile} %%PREFIX%%/bin/slon ${command_args}
+}
+
+start_cmd=slon_start
+
 run_rc_command "$1"
--- slony1-1.2.15.patch ends here ---

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



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