I realize that you copied this script, but it has issues. :)  I know
I've said it before, but this is why I'm so pedantic about reviewing the
rc.d scripts, bad examples are copied, seemingly with more frequency
than good ones. :-/

One of the issues with this script is that it's pretty convoluted.
Therefore I _think_ I got everything working the way it did before, but
it needs testing. Particularly the _trac_env stuff.

The single most important change is tracd_args -> tracd_flags. I don't
know why this _args keeps slipping in, but it's not standard, and
shouldn't be used. The advantage of _flags is that it's handled
transparently by rc.subr.

Beyond that, I've removed the default empty variable assignments, they
are not necessary or desirable, especially when you have such good
documentation in the headers.

There are a variety of other simplifications, and I moved the
environment settings into a start_precmd.

Like I said, this needs testing. If you have any questions, feel free to
follow up to freebsd-rc@.


Doug


On 07/05/2011 17:26, Cheng-Lung Sung wrote:
> clsung      2011-07-06 00:26:45 UTC
> 
>   FreeBSD ports repository
> 
>   Modified files:
>     www/trac             Makefile 
>   Added files:
>     www/trac/files       tracd.in 
>   Log:
>   - Since trac can work as standalone http server, I copied rc script from 
> old trac-multirepos port.
>   - also fixed portlint warning about CONFLICTS line.
>   
>   PR:             ports/155295  
> http://www.FreeBSD.org/cgi/query-pr.cgi?pr=155295
>   Submitted by:   "Grzegorz Blach" <magik_AT_roorback dot net>
>   
>   Revision  Changes    Path
>   1.54      +7 -3      ports/www/trac/Makefile
>   1.1       +61 -0     ports/www/trac/files/tracd.in (new)
> 
> http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/www/trac/Makefile.diff?&r1=1.53&r2=1.54&f=h
> http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/www/trac/files/tracd.in
> 



-- 

        Nothin' ever doesn't change, but nothin' changes much.
                        -- OK Go

        Breadth of IT experience, and depth of knowledge in the DNS.
        Yours for the right price.  :)  http://SupersetSolutions.com/

Index: tracd.in
===================================================================
RCS file: /home/pcvs/ports/www/trac/files/tracd.in,v
retrieving revision 1.1
diff -u -r1.1 tracd.in
--- tracd.in    6 Jul 2011 00:26:45 -0000       1.1
+++ tracd.in    21 Jul 2011 05:53:57 -0000
@@ -1,13 +1,10 @@
 #!/bin/sh
-#
-# tracd startup
-#
-# $FreeBSD: ports/www/trac/files/tracd.in,v 1.1 2011/07/06 00:26:45 clsung Exp 
$
 
+# $FreeBSD: ports/www/trac/files/tracd.in,v 1.1 2011/07/06 00:26:45 clsung Exp 
$
+#
 # PROVIDE: tracd
 # REQUIRE: LOGIN
 # KEYWORD: shutdown
-
 #
 # Add the following lines to /etc/rc.conf to enable or configure tracd:
 # tracd_enable (bool):         Set to "NO" by default.
@@ -23,39 +20,43 @@
 # tracd_env (str):             The project environment name while using single
 #                              environment mode. The default is empty, meaning
 #                              multiproject mode.
-# tracd_args (str):            Extra arguments passed to tracd startup
+# tracd_flags (str):           Extra arguments passed to tracd startup
 #                              command. Empty by default.
-#
 
 . /etc/rc.subr
 
 name="tracd"
 rcvar="${name}_enable"
 
+load_rc_config ${name}
+
 tracd_enable=${tracd_enable:-"NO"}
 tracd_listen=${tracd_listen:-"0.0.0.0"}
 tracd_port=${tracd_port:-"80"}
-tracd_pidfile=${tracd_pidfile:-"/var/run/tracd.pid"}
 tracd_envdir=${tracd_envdir:-"/home/trac"}
-tracd_env=${tracd_env:-""}
-tracd_args=${tracd_args:-""}
-
-load_rc_config ${name}
 
-command_args="--daemonize --hostname=${tracd_listen} --port=${tracd_port}"
-command_args="${command_args} --pidfile=${tracd_pidfile} ${tracd_args}"
+pidfile=${tracd_pidfile:-"/var/run/tracd.pid"}
 
 required_dirs=${tracd_envdir}
-pidfile=${tracd_pidfile}
 
-if [ -z "${tracd_env}" ]; then
-       _trac_env="--env-parent-dir ${tracd_envdir}"
-else
-       _trac_env="${tracd_envdir}/${tracd_env}"
-       command_args="${command_args} --single-env"
-fi
+command_args="%%PREFIX%%/bin/tracd --hostname=${tracd_listen} \
+       --port=${tracd_port} --pidfile=${tracd_pidfile} --daemonize"
+
+start_precmd="${name}_prestart"
+
+tracd_prestart()
+{
+       local _trac_env
+
+       if [ -z "${tracd_env}" ]; then
+               _trac_env="--env-parent-dir ${tracd_envdir}"
+       else
+               _trac_env="--single-env ${tracd_envdir}/${tracd_env}"
+       fi
+
+       command_args="$command_args $_trac_env"
+}
 
-command_args="%%PREFIX%%/bin/tracd ${command_args} ${_trac_env}"
 command="%%PYTHON_CMD%%"
 
 run_rc_command $1
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "cvs-all-unsubscr...@freebsd.org"

Reply via email to