xref: /dragonfly/sbin/rcorder/rcorder.8 (revision ffe53622)
1.\"	$NetBSD: rcorder.8,v 1.3 2000/07/17 14:16:22 mrg Exp $
2.\"
3.\" Copyright (c) 1998
4.\" 	Perry E. Metzger.  All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\"    must display the following acknowledgment:
16.\"	This product includes software developed for the NetBSD Project
17.\"	by Perry E. Metzger.
18.\" 4. The name of the author may not be used to endorse or promote products
19.\"    derived from this software without specific prior written permission.
20.\"
21.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31.\"
32.\" $FreeBSD: src/sbin/rcorder/rcorder.8,v 1.3 2002/11/25 16:23:03 ru Exp $
33.\"
34.Dd September 29, 2016
35.Dt RCORDER 8
36.Os
37.Sh NAME
38.Nm rcorder
39.Nd print a dependency ordering of interdependent files
40.Sh SYNOPSIS
41.Nm
42.Op Fl k Ar keep
43.Op Fl s Ar skip
44.Op Fl o Ar keyword
45.Op Fl p
46.Ar
47.Sh DESCRIPTION
48The
49.Nm
50utility is designed to print out a dependency ordering of a set of
51interdependent files.
52Typically it is used to find an execution
53sequence for a set of shell scripts in which certain files must be
54executed before others.
55.Pp
56Each file passed to
57.Nm
58must be annotated with special lines (which look like comments to the
59shell) which indicate the dependencies the files have upon certain
60points in the sequence, known as
61.Dq conditions ,
62and which indicate, for each file, which
63.Dq conditions
64may be expected to be filled by that file.
65.Pp
66Within each file, a block containing a series of
67.Dq Li REQUIRE ,
68.Dq Li PROVIDE ,
69.Dq Li BEFORE
70and
71.Dq Li KEYWORD
72lines must appear.
73The format of the lines is rigid.
74Each line must begin with a single
75.Ql # ,
76followed by a single space, followed by
77.Dq Li PROVIDE: ,
78.Dq Li REQUIRE: ,
79.Dq Li BEFORE: ,
80or
81.Dq Li KEYWORD: .
82No deviation is permitted.
83Each dependency line is then followed by a series of conditions,
84separated by whitespace.
85Multiple
86.Dq Li PROVIDE ,
87.Dq Li REQUIRE ,
88.Dq Li BEFORE
89and
90.Dq Li KEYWORD
91lines may appear, but all such lines must appear in a sequence without
92any intervening lines, as once a line that does not follow the format
93is reached, parsing stops.
94.Pp
95The options are as follows:
96.Bl -tag -width indent
97.It Fl k
98Add the specified keyword to the
99.Dq "keep list" .
100If any
101.Fl k
102option is given, only those files containing the matching keyword are listed.
103.It Fl s
104Add the specified keyword to the
105.Dq "skip list" .
106If any
107.Fl s
108option is given, files containing the matching keyword are not listed.
109.It Fl o
110Generate the dependency list required to activate the specified
111.Ar keyword ,
112including the file providing
113.Ar keyword .
114If several
115.Fl o
116options are specified, the results are merged.
117.It Fl p
118Output the list of provided keywords for the specified files.
119.El
120.Pp
121 An example block follows:
122.Bd -literal -offset indent
123# REQUIRE: networking syslog
124# REQUIRE: usr
125# PROVIDE: dns nscd
126.Ed
127.Pp
128This block states that the file in which it appears depends upon the
129.Dq Li networking ,
130.Dq Li syslog ,
131and
132.Dq Li usr
133conditions, and provides the
134.Dq Li dns
135and
136.Dq Li nscd
137conditions.
138.Pp
139A file may contain zero
140.Dq Li PROVIDE
141lines, in which case it provides no conditions, and may contain zero
142.Dq Li REQUIRE
143lines, in which case it has no dependencies.
144There must be at least one file with no dependencies in the set of
145arguments passed to
146.Nm
147in order for it to find a starting place in the dependency ordering.
148.Sh EXIT STATUS
149.Ex -std
150.Sh DIAGNOSTICS
151The
152.Nm
153utility may print one of the following error messages
154if it encounters an error while processing the file list.
155.Bl -diag
156.It "Requirement %s has no providers, aborting."
157No file has a
158.Dq Li PROVIDE
159line corresponding to a condition present in a
160.Dq Li REQUIRE
161line in another file.
162.It "Circular dependency on provision %s, aborting."
163A set of files has a circular dependency which was detected while
164processing the stated condition.
165.It "Circular dependency on file %s, aborting."
166A set of files has a circular dependency which was detected while
167processing the stated file.
168.El
169.Sh SEE ALSO
170.Xr rc 8
171.Sh HISTORY
172The
173.Nm
174utility appeared in
175.Nx 1.5 .
176.Nm
177first appeared in
178.Dx 1.0 .
179.Sh AUTHORS
180.An -nosplit
181Written by
182.An Perry E. Metzger Aq Mt perry@piermont.com
183and
184.An Matthew R. Green Aq Mt mrg@eterna.com.au .
185