Moving it back to etc/rc.d would be fine. Moving it to a new libexec/rc/rc.d along with the etc/rc program and subroutines would be fine. Leaving it in sbin/init/rc.d is totally wrong.
-> brd (pkgbase blanket)
brd and I had a chat about this; I had it moved out of init to libexec/rc and then ran into issues testing make package on my systems (broken framework in Makefiles) and I have ignored it after that.
My point was that I don't want init to be touched (and it's own package) unless there's an actual need for it.
I had also exchanged an email with kmoore with libexec/rc would work for him so they could have libexec/openrc as a replacement for example and he sounded fine with it.
brd@, I "assigned" it to you initially, as you introduced the regression. If you are unwilling to fix regressions introduced, that is somewhat concerning.
Regardless of who takes it, it needs fixing. Reverting r336859,336857,336845 would be an acceptable way of accomplishing this. Changes from r337382, 338234, and 338238 may need to be reapplied carefully, but for now the impact of the bad move are still limited.
(In reply to Conrad Meyer from comment #3)
I don't consider this report to be useful, because you disagree with the location but, provide no supporting evidence for your claim, so to quote:
I am happy to support it going somewhere else, but I don't have time to bikeshed it. Other people have suggested locations and I told them this as well.
Sorry, I didn't realize abundance of evidence was in question.
rc.d scripts have nothing to do with init.
init starts gettys, spawns the *separate* /etc/rc program when told to go to multi-user, stays alive as pid 1, and kills zombies. That's it. For evidence of this you can see the init.c source code (it's quite short) or the init(8) manual page (it's also quite short).
For evidence of rc being a separate entity from init(8) you can see the rc(8) manual page or like, look at the /etc/rc source code.
It's fine that you are just unfamiliar with how init and rc works — most people are. But you should have at least somewhat familiarized yourself with the components before rototilling the directory around. And you should listen when people who are familiar let you know you've made a mistake, and you should fix it.
Created attachment 198169 [details]
shell script to move everything in place and patch and svn actions
This is a shell script to be places into a (clean) svn checkout, which will move rc* out of sbin/init and to libexec/rc and do all necessary svnlite operations as well as patching Makefiles.
I cannot fully test make packages (as that by itself is not working due to other issues), and I have not tested that the installed version boots, but the stagework from make packages looked ok.
(In reply to Bjoern A. Zeeb from comment #6)
If someone can test this the two days and either deal with re@ and commit it yourself or let me know that it all looks good and I'll do the approve/commit dance.
Things to consider:
(a) only touch the init package (follow up commit to make init its own package) when really needed as it is pid 1 and we don't want to update it all with every rc shell script change,
(b) having rc in its own place and package will allow a more easy substitution of the rc framework, such as openrc.
Discussed with: brd, kmoore (bz did)
Submitted by: bz
A commit references this bug:
Date: Wed Oct 17 16:49:12 UTC 2018
New revision: 339413
Move the rc framework out of sbin/init into libexec/rc.
The reasons for this are forward looking to pkgbase:
* /sbin/init is a special binary; try not to replace it with
every package update because an rc script was touched.
(a follow-up commit will make init its own package)
* having rc in its own place will allow more easy replacement
of the rc framework with alternatives, such as openrc.
Discussed with: brd (during BSDCam), kmoore
Requested by: cem, bz
Approved by: re (gjb)