On Sat, May 21, 2022, at 10:56 AM, aisha wrote:
> On 5/21/2022 12:24 PM, Antoine Jacoutot wrote:
>> On Sat, May 21, 2022 at 12:04:03PM -0400, A Tammy wrote:
>>> On 5/21/2022 10:53 AM, Antoine Jacoutot wrote:
>>>> Hi.
>>>>
>>>> This diff allows to configure an directory from which we run rc.d commands.
>>>> This can be useful for daemons that must cd into a specific directory prio
>>>> launching.
>>>>
>>>> Here's an example for the automounter.
>>>> Some rc.d scripts in ports can benefit from this as well (so we can remove
>>>> handcrafted rc_start function and use the default).
>>>>
>>>> Comments / OK?
>>>>
>>>> Index: amd
>>>> ===================================================================
>>>> RCS file: /cvs/src/etc/rc.d/amd,v
>>>> retrieving revision 1.9
>>>> diff -u -p -r1.9 amd
>>>> --- amd    11 Jan 2018 21:09:26 -0000      1.9
>>>> +++ amd    21 May 2022 14:52:07 -0000
>>>> @@ -7,16 +7,13 @@ daemon="/usr/sbin/amd"
>>>>    . /etc/rc.d/rc.subr
>>>>    pexp="${daemon}.*"
>>>> +rc_execdir=/etc/amd
>>>>    rc_reload=NO
>>>>    rc_stop=NO
>>>>    rc_pre() {
>>>>            [[ -e ${amd_master} ]] || return 1
>>>>            daemon_flags="${daemon_flags} $(print -rn -- $(< 
>>>> ${amd_master}))"
>>>> -}
>>>> -
>>>> -rc_start() {
>>>> -  ${rcexec} "cd /etc/amd; ${daemon} ${daemon_flags}"
>>>>    }
>>>>    rc_cmd $1
>>>>
>>>>
>>>>
>>>> Index: etc/rc.d/rc.subr
>>>> ===================================================================
>>>> RCS file: /cvs/src/etc/rc.d/rc.subr,v
>>>> retrieving revision 1.153
>>>> diff -u -p -r1.153 rc.subr
>>>> --- etc/rc.d/rc.subr       21 May 2022 10:50:09 -0000      1.153
>>>> +++ etc/rc.d/rc.subr       21 May 2022 14:49:17 -0000
>>>> @@ -164,8 +164,11 @@ rc_exec() {
>>>>            [ "${daemon_rtable}" -eq "$(id -R)" ] ||
>>>>                    _rcexec="route -T ${daemon_rtable} exec ${_rcexec}"
>>>> -  ${_rcexec} "${daemon_logger:+set -o pipefail; }$@${daemon_logger:+ 2>&1 
>>>> |
>>>> -          logger -ip ${daemon_logger} -t ${_name}}"
>>>> +  ${_rcexec} "${daemon_logger:+set -o pipefail; } \
>>>> +          ${rc_execdir:+cd ${rc_execdir} && } \
>>>> +          $@ \
>>>> +          ${daemon_logger:+ 2>&1 |
>>>> +                  logger -ip ${daemon_logger} -t ${_name}}"
>>>>    }
>>>>    rc_start() {
>>>> Index: share/man/man8/rc.subr.8
>>>> ===================================================================
>>>> RCS file: /cvs/src/share/man/man8/rc.subr.8,v
>>>> retrieving revision 1.43
>>>> diff -u -p -r1.43 rc.subr.8
>>>> --- share/man/man8/rc.subr.8       21 May 2022 14:11:39 -0000      1.43
>>>> +++ share/man/man8/rc.subr.8       21 May 2022 14:49:17 -0000
>>>> @@ -194,9 +194,10 @@ Execute process using
>>>>    according to
>>>>    .Va daemon_class ,
>>>>    .Va daemon_user ,
>>>> -.Va daemon_rtable
>>>> -and
>>>> +.Va daemon_rtable ,
>>>>    .Va daemon_logger
>>>> +and
>>>> +.Va rc_execdir
>>> Is there a reason why you've chosen it to be rc_execdir instead of
>>> daemon_execdir?
>>> Calling it `daemon_execdir` (and possibly allowing it to be modified from
>>> /etc/rc.conf.local)
>>> would be inline with other daemon_* variables.
>>> The first thing that comes to my mind would be people who want to start
>>> multiple copies of
>>> a daemon, e.g. navidrome or calibre-web, create libraries in the start
>>> directory.
>>> I personally don't have anything except calibre-web, so no strong opinions
>>> on this.
>> I wondered the same but came to the conclusion there where not that many use
>> cases and implementing rc_ is easier.
>> Going for daemon_ will mean changing rcctl as well.
>>
>> I have no strong preference honestly.
>> If people think it will be handy to change this in rc.conf.local, I will
>> change the implementation.
> In that case, my vote is for it to be called daemon_execdir :)

Mine too! :D

>>> Also, if it is decided to keep it rc_execdir, does it need to be added to
>>> the man page?
>>> It is not something thats going to be exposed user side.
>> Yes it is needed.
>> It is exposed to people creating rc.d scripts; which is exactly what
>> rc.subr(8) is for.
>> Users will read rc.d(8).
>> Also that kind of contradicts your point for using daemon_
>>
>>
>>>>    values.
>>>>    .It Ic rc_reload
>>>>    Send the
>>>> @@ -305,6 +306,9 @@ in an
>>>>    .Nm rc.d
>>>>    script to force starting the daemon in background when using the default
>>>>    .Ic rc_start .
>>>> +.It Va rc_execdir
>>>> +Change to this directory before running
>>>> +.Ic rc_exec .
>>>>    .It Va rc_reload
>>>>    Can be set to
>>>>    .Dq NO
>>>>
>>>>

Reply via email to