From owner-freebsd-ports@FreeBSD.ORG Mon Dec 5 17:27:07 2005 Return-Path: X-Original-To: ports@freebsd.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D8B6316A41F; Mon, 5 Dec 2005 17:27:07 +0000 (GMT) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (comp.chem.msu.su [158.250.32.97]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1A27B43D5E; Mon, 5 Dec 2005 17:27:03 +0000 (GMT) (envelope-from yar@comp.chem.msu.su) Received: from comp.chem.msu.su (localhost [127.0.0.1]) by comp.chem.msu.su (8.13.3/8.13.3) with ESMTP id jB5HQxM4089774; Mon, 5 Dec 2005 20:26:59 +0300 (MSK) (envelope-from yar@comp.chem.msu.su) Received: (from yar@localhost) by comp.chem.msu.su (8.13.3/8.13.3/Submit) id jB5HQwIx089769; Mon, 5 Dec 2005 20:26:58 +0300 (MSK) (envelope-from yar) Date: Mon, 5 Dec 2005 20:26:58 +0300 From: Yar Tikhiy To: Ion-Mihai Tetcu Message-ID: <20051205172658.GB88485@comp.chem.msu.su> References: <20051205145805.0db6cf26@it.buh.tecnik93.com> <20051205161656.GC7653@odin.ac.hmc.edu> <20051205190905.28ad8a0a@it.buh.tecnik93.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20051205190905.28ad8a0a@it.buh.tecnik93.com> User-Agent: Mutt/1.5.9i Cc: Brooks Davis , ports@freebsd.org, freebsd-rc@freebsd.org Subject: Re: RC keywords question X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Dec 2005 17:27:08 -0000 On Mon, Dec 05, 2005 at 07:09:05PM +0200, Ion-Mihai Tetcu wrote: > On Mon, 5 Dec 2005 08:16:56 -0800 > Brooks Davis wrote: > > > On Mon, Dec 05, 2005 at 02:58:05PM +0200, Ion-Mihai Tetcu wrote: > > > Hi, > > > > > > > > > I'm converting my ports to work with the new HEAD RC style and > > > while at it I also thought to check the keywords to make sure > > > they're OK. Read rcorder(8) and rc(8). > > > > > > Let's take mail/dspam as an example. Obviously it PROVIDE: dspam > > > > > > When run in --daemon mode dspam receives messages via LMTP and > > > deliver them via SMTP. So it REQUIRE: NETWORK; it also uses syslogd > > > (which starts BEFORE: SERVERS). > > > > > > Now things start getting interesting. > > > > > > Since it's a content filter, it should start before the SMTP server. > > > > > > If SMTP server = sendmail|courier it's easy: BEFORE: mail > > > > > > If it's postfix it's: > > > - if it's started via /etc/rc.d/sendmail (sendmail_enable="YES" and > > > postfix in /etc/mail/mailer.conf) BEFORE: mail should be enough > > > (but see below); > > > - if sendmail_enable="NO" and /usr/local/sbin/postfix is linked in > > > rc.d as sendmail.sh then BEFORE: mail should be OK too since that's > > > before rc.d/localpkg (right ?) > > > > > > How to interact with various ways to start qmail I have yet to > > > discover. > > > > > > So until here I would have: > > > PROVIDE: dspam > > > REQUIRE: NETWORK syslogd > > > BEFORE: mail > > > and since mail REQUIRE: LOGIN this is actually: > > > REQUIRE: NETWORK syslogd LOGIN > > > > > > Q: should I write all the REQUIRE keywords or just the last one > > > (LOGIN) ? > > > > > > > > > OK, now dspam could also use mysql or pgsql; if the dependency is > > > set at compile time, it's easy to have the right REQUIRE; but dspam > > > can also use either or none, as instructed in dspam.conf so this is > > > also settable at run-time. How can I write the REQUIRE: line in > > > this case ? > > > > > > "BEFORE: mail" acts for most intents and purposes like all mail > > scripts contained "REQUIRE: dspam" so dspam does not depend on > > LOGIN. As a rule, there's no point in depending on syslogd, just > > I think it's better if I make sure dspam starts before its potential > consumers that the other way around; and this for one reason: I know > that my port's consumers are mail servers, but making each mail server > OPTIONally depend of each content filter is obviously unfeasible (of > course I counld ask the user to modify his server's rc script by hand). > Please correct me if I'm wrong. IMHO this is a very good general point. A mail server can live without a content filter while the latter is meaningless without the former. So the filter's rc.d script should use `BEFORE: mail'. > > depend on SERVERS instead. This is actually what DAEMON is. I'd say > > that virtually all ports should "REQUIRE: DAEMON" unless they have > > more specific requirements. > > So I should have REQUIRE: DAEMON and that's all ? > Do I understand this right: BEFORE is for approximately selecting when > the server should start while REQUIRE actually asks for something to be > running ? Why, BEFORE is just the antipode of REQUIRE. REQUIRE asks for something to run before this script while BEFORE asks for this script to run before something. The purpose for the two opposite ways of telling the same dependence is explained above in your own words: When script A depends on script B, the information about the dependence can belong to either A or B while the other script should know nothing about it. -- Yar