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 July 28, 2007 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 first appeared in 175.Nx 1.5 . 176.Sh AUTHORS 177.An -nosplit 178Written by 179.An Perry E. Metzger Aq Mt perry@piermont.com 180and 181.An Matthew R. Green Aq Mt mrg@eterna.com.au . 182