2002-06-21 15:56:16 +00:00
|
|
|
.\" $NetBSD: rcorder.8,v 1.3 2000/07/17 14:16:22 mrg Exp $
|
2001-06-16 07:16:14 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1998
|
|
|
|
.\" Perry E. Metzger. All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
|
|
.\" must display the following acknowledgment:
|
|
|
|
.\" This product includes software developed for the NetBSD Project
|
|
|
|
.\" by Perry E. Metzger.
|
|
|
|
.\" 4. The name of the author may not be used to endorse or promote products
|
|
|
|
.\" derived from this software without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
.\"
|
2002-07-06 19:34:37 +00:00
|
|
|
.\" $FreeBSD$
|
2001-06-16 07:16:14 +00:00
|
|
|
.\"
|
2008-06-09 09:07:58 +00:00
|
|
|
.Dd June 9, 2008
|
2001-06-16 07:16:14 +00:00
|
|
|
.Dt RCORDER 8
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm rcorder
|
|
|
|
.Nd print a dependency ordering of interdependent files
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Nm
|
|
|
|
.Op Fl k Ar keep
|
|
|
|
.Op Fl s Ar skip
|
|
|
|
.Ar
|
|
|
|
.Sh DESCRIPTION
|
2002-07-06 19:34:37 +00:00
|
|
|
The
|
2001-06-16 07:16:14 +00:00
|
|
|
.Nm
|
2002-07-06 19:34:37 +00:00
|
|
|
utility is designed to print out a dependency ordering of a set of
|
2002-11-25 16:23:03 +00:00
|
|
|
interdependent files.
|
|
|
|
Typically it is used to find an execution
|
2001-06-16 07:16:14 +00:00
|
|
|
sequence for a set of shell scripts in which certain files must be
|
|
|
|
executed before others.
|
|
|
|
.Pp
|
|
|
|
Each file passed to
|
|
|
|
.Nm
|
|
|
|
must be annotated with special lines (which look like comments to the
|
|
|
|
shell) which indicate the dependencies the files have upon certain
|
|
|
|
points in the sequence, known as
|
|
|
|
.Dq conditions ,
|
|
|
|
and which indicate, for each file, which
|
|
|
|
.Dq conditions
|
|
|
|
may be expected to be filled by that file.
|
|
|
|
.Pp
|
|
|
|
Within each file, a block containing a series of
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li REQUIRE ,
|
|
|
|
.Dq Li PROVIDE ,
|
|
|
|
.Dq Li BEFORE
|
2001-06-16 07:16:14 +00:00
|
|
|
and
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li KEYWORD
|
2001-06-16 07:16:14 +00:00
|
|
|
lines must appear.
|
2002-11-25 16:23:03 +00:00
|
|
|
The format of the lines is rigid.
|
|
|
|
Each line must begin with a single
|
|
|
|
.Ql # ,
|
2001-06-16 07:16:14 +00:00
|
|
|
followed by a single space, followed by
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li PROVIDE: ,
|
|
|
|
.Dq Li REQUIRE: ,
|
|
|
|
.Dq Li BEFORE: ,
|
2001-06-16 07:16:14 +00:00
|
|
|
or
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li KEYWORD: .
|
2001-06-16 07:16:14 +00:00
|
|
|
No deviation is permitted.
|
|
|
|
Each dependency line is then followed by a series of conditions,
|
2002-11-25 16:23:03 +00:00
|
|
|
separated by whitespace.
|
|
|
|
Multiple
|
|
|
|
.Dq Li PROVIDE ,
|
|
|
|
.Dq Li REQUIRE ,
|
|
|
|
.Dq Li BEFORE
|
2001-06-16 07:16:14 +00:00
|
|
|
and
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li KEYWORD
|
2002-06-21 15:56:16 +00:00
|
|
|
lines may appear, but all such lines must appear in a sequence without
|
2001-06-16 07:16:14 +00:00
|
|
|
any intervening lines, as once a line that does not follow the format
|
|
|
|
is reached, parsing stops.
|
|
|
|
.Pp
|
|
|
|
The options are as follows:
|
2002-11-25 16:23:03 +00:00
|
|
|
.Bl -tag -width indent
|
2001-06-16 07:16:14 +00:00
|
|
|
.It Fl k
|
|
|
|
Add the specified keyword to the
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq "keep list" .
|
2001-06-16 07:16:14 +00:00
|
|
|
If any
|
|
|
|
.Fl k
|
|
|
|
option is given, only those files containing the matching keyword are listed.
|
|
|
|
.It Fl s
|
|
|
|
Add the specified keyword to the
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq "skip list" .
|
2001-06-16 07:16:14 +00:00
|
|
|
If any
|
|
|
|
.Fl s
|
|
|
|
option is given, files containing the matching keyword are not listed.
|
|
|
|
.El
|
|
|
|
.Pp
|
2004-07-02 18:37:52 +00:00
|
|
|
An example block follows:
|
2001-06-16 07:16:14 +00:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
# REQUIRE: networking syslog
|
|
|
|
# REQUIRE: usr
|
|
|
|
# PROVIDE: dns nscd
|
|
|
|
.Ed
|
|
|
|
.Pp
|
|
|
|
This block states that the file in which it appears depends upon the
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li networking ,
|
|
|
|
.Dq Li syslog ,
|
2001-06-16 07:16:14 +00:00
|
|
|
and
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li usr
|
2001-06-16 07:16:14 +00:00
|
|
|
conditions, and provides the
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li dns
|
2001-06-16 07:16:14 +00:00
|
|
|
and
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li nscd
|
2001-06-16 07:16:14 +00:00
|
|
|
conditions.
|
|
|
|
.Pp
|
|
|
|
A file may contain zero
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li PROVIDE
|
2001-06-16 07:16:14 +00:00
|
|
|
lines, in which case it provides no conditions, and may contain zero
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li REQUIRE
|
2001-06-16 07:16:14 +00:00
|
|
|
lines, in which case it has no dependencies.
|
|
|
|
There must be at least one file with no dependencies in the set of
|
|
|
|
arguments passed to
|
|
|
|
.Nm
|
|
|
|
in order for it to find a starting place in the dependency ordering.
|
|
|
|
.Sh DIAGNOSTICS
|
2002-07-06 19:34:37 +00:00
|
|
|
The
|
2001-06-16 07:16:14 +00:00
|
|
|
.Nm
|
2002-07-06 19:34:37 +00:00
|
|
|
utility may print one of the following error messages and exit with a non-zero
|
2001-06-16 07:16:14 +00:00
|
|
|
status if it encounters an error while processing the file list.
|
|
|
|
.Bl -diag
|
|
|
|
.It "Requirement %s has no providers, aborting."
|
|
|
|
No file has a
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li PROVIDE
|
2001-06-16 07:16:14 +00:00
|
|
|
line corresponding to a condition present in a
|
2002-11-25 16:23:03 +00:00
|
|
|
.Dq Li REQUIRE
|
2001-06-16 07:16:14 +00:00
|
|
|
line in another file.
|
|
|
|
.It "Circular dependency on provision %s, aborting."
|
|
|
|
A set of files has a circular dependency which was detected while
|
|
|
|
processing the stated condition.
|
|
|
|
.It "Circular dependency on file %s, aborting."
|
|
|
|
A set of files has a circular dependency which was detected while
|
|
|
|
processing the stated file.
|
|
|
|
.El
|
2010-05-13 12:07:55 +00:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr rc 8
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
utility first appeared in
|
|
|
|
.Nx 1.5 .
|
|
|
|
.Sh AUTHORS
|
|
|
|
.An -nosplit
|
|
|
|
Written by
|
|
|
|
.An Perry E. Metzger Aq perry@piermont.com
|
|
|
|
and
|
|
|
|
.An Matthew R. Green Aq mrg@eterna.com.au .
|
2008-06-09 09:07:58 +00:00
|
|
|
.Sh BUGS
|
|
|
|
The
|
|
|
|
.Dq Li REQUIRE
|
|
|
|
keyword is misleading:
|
|
|
|
It doesn't describe which daemons have to be running before a script
|
|
|
|
will be started.
|
|
|
|
It describes which scripts must be placed before it in
|
|
|
|
the dependency ordering.
|
|
|
|
For example,
|
|
|
|
if your script has a
|
|
|
|
.Dq Li REQUIRE
|
|
|
|
on
|
|
|
|
.Dq Li named ,
|
|
|
|
it means the script must be placed after the
|
|
|
|
.Dq Li named
|
|
|
|
script in the dependency ordering,
|
|
|
|
not necessarily that it requires
|
|
|
|
.Xr named 8
|
|
|
|
to be started or enabled.
|