80c075588d
rcorder is designed to print out a dependency ordering of a set of interdependent files. Typically it is used to find an execution sequence for a set of shell scripts in which certain files must be executed before others.
168 lines
5 KiB
Groff
168 lines
5 KiB
Groff
.\" $NetBSD: rcorder.8,v 1.1.1.1 2004/08/27 01:49:15 schmonz Exp $
|
|
.\"
|
|
.\" 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.
|
|
.\"
|
|
.\"
|
|
.Dd April 23, 2003
|
|
.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
|
|
.Nm
|
|
is designed to print out a dependency ordering of a set of
|
|
interdependent files.
|
|
Typically it is used to find an execution sequence for a set of
|
|
shell scripts in which certain files must be executed before others.
|
|
.Pp
|
|
Each file passed to
|
|
.Nm
|
|
should 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
|
|
.Dq REQUIRE ,
|
|
.Dq PROVIDE ,
|
|
.Dq BEFORE
|
|
and
|
|
.Dq KEYWORD
|
|
lines should appear.
|
|
The format of the lines is rigid.
|
|
Each line must begin with a single
|
|
.Dq # ,
|
|
followed by a single space, followed by
|
|
.Dq PROVIDE: ,
|
|
.Dq REQUIRE: ,
|
|
.Dq BEFORE: ,
|
|
or
|
|
.Dq KEYWORD: .
|
|
No deviation is permitted.
|
|
Each dependency line is then followed by a series of conditions,
|
|
separated by whitespace.
|
|
Multiple
|
|
.Dq PROVIDE ,
|
|
.Dq REQUIRE ,
|
|
.Dq BEFORE
|
|
and
|
|
.Dq KEYWORD
|
|
lines may appear, but all such lines must appear in a sequence without
|
|
any intervening lines, as once a line that does not follow the format
|
|
is reached, parsing stops.
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width Ds
|
|
.It Fl k
|
|
Add the specified keyword to the
|
|
.Dq keep list .
|
|
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
|
|
.Dq skip list .
|
|
If any
|
|
.Fl s
|
|
option is given, files containing the matching keyword are not listed.
|
|
.El
|
|
.Pp
|
|
An example block follows:
|
|
.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
|
|
.Dq networking ,
|
|
.Dq syslog ,
|
|
and
|
|
.Dq usr
|
|
conditions, and provides the
|
|
.Dq dns
|
|
and
|
|
.Dq nscd
|
|
conditions.
|
|
.Pp
|
|
A file may contain zero
|
|
.Dq PROVIDE
|
|
lines, in which case it provides no conditions, and may contain zero
|
|
.Dq REQUIRE
|
|
lines, in which case it has no dependencies.
|
|
A file containing no
|
|
.Dq PROVIDE ,
|
|
.Dq REQUIRE ,
|
|
or
|
|
.Dq BEFORE
|
|
lines may be output at an arbitrary position in the dependency
|
|
ordering.
|
|
.Pp
|
|
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
|
|
.Nm
|
|
may print one of the following error messages and exit with a non-zero
|
|
status if it encounters an error while processing the file list.
|
|
.Bl -diag
|
|
.It "Requirement %s has no providers, aborting."
|
|
No file has a
|
|
.Dq PROVIDE
|
|
line corresponding to a condition present in a
|
|
.Dq REQUIRE
|
|
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
|
|
.Sh SEE ALSO
|
|
.Xr rc 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
program first appeared in
|
|
.Nx 1.5 .
|
|
.Sh AUTHORS
|
|
Written by Perry E. Metzger (perry@piermont.com) and
|
|
Matthew R. Green (mrg@eterna.com.au).
|