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>