ports/132849: [PATCH] databases/slony1: rework startup script (daemon, rc.subr)

Jimmy Olgeni olgeni at FreeBSD.org
Fri Mar 20 10:40:02 UTC 2009


>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 at 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:



More information about the freebsd-ports-bugs mailing list