On Sat, May 21, 2022, at 3:48 PM, Antoine Jacoutot wrote:
> Can you give me real life examples please where it would be useful.
> I don’t want to add configuration knob for a couple of obscur use cases.
audio/navidrome
And there is something else .. I’ll have to look.
>
> Thanks.
>
> —
> Antoine
>
>> On 21 May 2022, at 22:26, Aaron Bieber <aa...@bolddaemon.com> wrote:
>>
>>
>>
>>> 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
>>>>>>
>>>>>>
>>