RFC: Alternate patch to have true new-style rc.d scripts in ports (without touching localpkg)

Mike Makonnen mtm at identd.net
Mon Aug 16 08:58:43 PDT 2004

I have thought about this considerably, and I think the best solution
is to have ports rc.d scripts installed to /etc/rc.d. One of the problems
with having them in a separate directory is that we don't know when
that directory will be available, so we have to order the scripts
in two phases: first /etc/rc.d and then the ports rc.d directory when
it is ready. If we do this then there is the REAL possiblity that
something may not get run the second time around. For example, let's
say that /etc/rc re-orders all the scripts (base and local) when it
hits the dummy script PORTS. Furthermore, after they are reordered we
skip the scripts that come before PORTS. The problem is that When the scripts
are reordered if a particular script does not have a dependency on PORTS (or
another script that requires PORTS) you are not guaranteed that if it came
after PORTS the first time it will still be after ports after the second

While you can have workarounds and introduce hacks around this problem, I
think the general messiness and potential problems of ordering scripts
more than once makes it a bad solution.

Secondly, there is really no compelling reason that all ports be
ordered with the base scripts. If a port is of such a nature that it
needs to be started much earlier than it currently is, either the ports
should install the script automatically to /etc/rc.d or it should give
the user the option of choosing.

So, I think the best course of action is to convert all ports startup
scripts to rc.d format and either
	a) install them all automatically to /etc/rc.d
	b) leave it to the port maintainer to choose
	c) leave it to the user to choose.

If we go with b or c, then /etc/rc.d/localpkg will need to learn to order
rc.d scripts. I have a patch for that which is similar to the one I committed
except that it has a list of the broken scripts which end in .sh that it
treats like old style scripts (this should preserve compatibility with those
upgrading from an older release):

Mike Makonnen  | GPG-KEY: http://www.identd.net/~mtm/mtm.asc
mtm at identd.net | Fingerprint: AC7B 5672 2D11 F4D0 EBF8  5279 5359 2B82 7CD4 1F55
mtm at FreeBSD.Org| FreeBSD - Unleash the Daemon !

More information about the freebsd-current mailing list