On Sun, Sep 7, 2014 at 4:28 AM, O. Hartmann <ohart...@zedat.fu-berlin.de> wrote:
> Am Sun, 7 Sep 2014 04:03:25 -0500
> Scot Hetzel <swhet...@gmail.com> schrieb:
>
>> On Sun, Sep 7, 2014 at 3:39 AM, Scot Hetzel <swhet...@gmail.com> wrote:
>> > I had a look at scripts/refdb.in, it is not a proper rc script for
>> > FreeBSD, as it is missing several keywords:
>> >
>> > # PROVIDE: <- all scripts need this
>> > # REQUIRE:
>> > # BEFORE:
>> > # KEYWORD: <- optional
>> >
>> > Which tells rcorder where to put refdb in the startup order.  Since
>> > these are missing, rcorder doesn't place it in the startup list.
>> >
>> I looked again, and it is not rcorder, it's /etc/rc and /etc/rc.subr
>> that determine which script to run.
>>
>> /etc/rc calls find_local_scripts_new from /etc/rc.subr.
>> find_local_scripts_new checks each rc script to make sure that they
>> have at least a "# PROVIDE: " keyword.  If it does, then it adds that
>> script to ${local_rc}.  Then /etc/rc runs:
>>
>> files=`rcorder /etc/rc.d/* ${local_rc}`
>>
>> to get the startup order for these scripts.  Then /etc/rc starts the
>> scripts in the proper order.
>>
>> Since, /usr/local/etc/rc.d/refdb{,.sh.dist} is missing the "# PROVIDE:
>> ", the script is skipped on startup.
>>
>> Since, rc.d/refdb is not a proper rc script, adding refdb_enable=YES
>> to /etc/rc.conf{,.local} will not control the starting of this script.
>>
>> Someone should fix service, so that it checks the rc script has a "#
>> PROVIDE: ", and displays an error message if it doesn't.
>
> Hello Scott,
>
> as the new maintainer of this port, I'm working on a solution, but first, I 
> have to
> understand the way this obscure rc-script system works. Thanks for your good 
> explanation.
> I tried to put PROVIDE/REQUIRE in the script, but I also changed refdb.sh -> 
> refdb
> which, in the end, didn't work. The service IS started with refdb.sh in rc.d/.
>
> Since the original refdb.sh init script targets both Linux and *BSD and 
> delegates the
> starting, stopping et cetera to a script called refdbctl, the latter script 
> needs to be
> examinded and as far as I understand, most of its functionality is covered
> by /etc/rc.cubr, except the part where refdbctl searches for the path of the 
> PID file and
> replaces the init/default path its configuration counterpart found in
> <prefix>/etc/refdb/refdbdrc.
>
> I guess, at the end FreeBSD doen't need the templated refdbctl/refdb.in (to 
> be found in
> the sources in scripts/).
>
> If you'd like to have a look at it, I can send you the sekelton I've already 
> prepared for
> the refurbishment of the port.
>

I created the rc.d/refdbd script by copying /etc/rc.d/inetd and make a
few minor changes.
This script (untested) should do what the scripts/refdb.in and
scripts/refdbctl.in were doing:

#!/bin/sh
#
# $FreeBSD$
#

# PROVIDE: refdbd
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="refdbd"
rcvar="refdbd_enable"
command="%%PREFIX%%/bin/${name}"
pidfile="/var/run/${name}.pid"
required_files="/etc/${name}.conf"
extra_commands="reload"

load_rc_config $name
run_rc_command "$1"

Place the above in textproc/refdb/files/refdb.in, then add:

USE_RC_SUBR= refdbd

in textproc/refdb/Makefile.


-- 
DISCLAIMER:

No electrons were maimed while sending this message. Only slightly bruised.
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to