From owner-freebsd-rc@FreeBSD.ORG Mon Aug 16 15:58:43 2004 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9C09616A4CE; Mon, 16 Aug 2004 15:58:43 +0000 (GMT) Received: from telecom.net.et (ns2.telecom.net.et [213.55.64.38]) by mx1.FreeBSD.org (Postfix) with ESMTP id B57DC43D5F; Mon, 16 Aug 2004 15:58:30 +0000 (GMT) (envelope-from mtm@identd.net) Received: from [213.55.67.10] (HELO pool-151-200-10-97.res.east.verizon.net) by telecom.net.et (CommuniGate Pro SMTP 3.4.8) with ESMTP-TLS id 54549556; Mon, 16 Aug 2004 18:51:18 +0300 Received: from rogue.acs-et.com (localhost [127.0.0.1]) ESMTP id i7GFxalB002519; Mon, 16 Aug 2004 18:59:38 +0300 (EAT) (envelope-from mtm@rogue.acs-et.com) Received: (from mtm@localhost) by rogue.acs-et.com (8.13.1/8.12.11/Submit) id i7GFxXg2002517; Mon, 16 Aug 2004 18:59:33 +0300 (EAT) (envelope-from mtm) Date: Mon, 16 Aug 2004 18:56:53 +0300 From: Mike Makonnen To: Oliver Eikemeier Message-ID: <20040816155653.GA2405@rogue.acs-et.com> References: <20040731155822.GB35674@rogue.acs-et.com> <2A78201C-E316-11D8-9C56-00039312D914@fillmore-labs.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2A78201C-E316-11D8-9C56-00039312D914@fillmore-labs.com> User-Agent: Mutt/1.4.2.1i X-Operating-System: FreeBSD/5.2-CURRENT (i386) cc: freebsd-rc@freebsd.org cc: current@freebsd.org Subject: Re: RFC: Alternate patch to have true new-style rc.d scripts in ports (without touching localpkg) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to /etc/rc.d design and implementation. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Aug 2004 15:58:43 -0000 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 reordering. 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): http://people.freebsd.org/~mtm/patches/localpkg.diff Cheers. -- Mike Makonnen | GPG-KEY: http://www.identd.net/~mtm/mtm.asc mtm@identd.net | Fingerprint: AC7B 5672 2D11 F4D0 EBF8 5279 5359 2B82 7CD4 1F55 mtm@FreeBSD.Org| FreeBSD - Unleash the Daemon !