summaryrefslogtreecommitdiff
path: root/dist.man
blob: 4a7ab9a1b4f6ace299a61b07ce22bdfc1e4d50eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
''' $Id: dist.man,v 3.0.1.6 1995/05/12 11:57:53 ram Exp ram $
'''
'''  Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
'''  
'''  You may redistribute only under the terms of the Artistic Licence,
'''  as specified in the README file that comes with the distribution.
'''  You may reuse parts of this distribution only within the terms of
'''  that same Artistic Licence; a copy of which may be found at the root
'''  of the source tree for dist 4.0.
'''
''' $Log: dist.man,v $
''' Revision 3.0.1.6  1995/05/12  11:57:53  ram
''' patch54: updated my e-mail address
'''
''' Revision 3.0.1.5  1994/10/29  15:46:03  ram
''' patch36: mentions new patlog script and ChangeLog file
'''
''' Revision 3.0.1.4  1994/05/06  13:54:17  ram
''' patch23: extended copyright notice to 1994
''' patch23: new script kitpost
'''
''' Revision 3.0.1.3  1994/01/24  13:55:41  ram
''' patch16: documents profile and its components
'''
''' Revision 3.0.1.2  1993/11/10  17:31:03  ram
''' patch14: added mention for new confmagic.h file
'''
''' Revision 3.0.1.1  1993/08/24  12:12:00  ram
''' patch3: added entries for patnotify and patsnap
'''
''' Revision 3.0  1993/08/18  12:04:07  ram
''' Baseline for dist 3.0 netwide release.
'''
''' 
.de Ex		\" Start of Example
.sp
.in +5
.nf
..
.de Ef		\" End of Example
.sp
.in -5
.fi
..
.TH DIST 1 ram
.SH NAME
dist \- introduction to dist
.SH DESCRIPTION
The \fIdist\fR package is a set of tools meant to ease the construction and
maintenance of portable software. There are four distinct parts in \fIdist\fR,
and it is also meant to be used with two external products, which are
publicly available: \fImailagent\fR and \fIpatch\fR.
.PP
The first component is the \fIConfigure\fR script generator, which is a
portability tool. It is automatically build up by \fImetaconfig\fR from your
sources and a set of units. Ideally, the end-user receiving your source code
will simply have to read your README file, run the \fIConfigure\fR script
(which is self-documented), and then run \fImake\fR. Your package should then
build cleanly on every UNIX platform.
.PP
The second component is the \fIMakefile.SH\fR generator, which is a generic
configured Makefile, reusing some of the information figured out by
.I Configure.
Although you may write your own Makefile and then use \fImakeSH\fR to transform
it into a \fIMakefile.SH\fR, it is better to write a generic \fIJmakefile\fR
description, which does not rely on a particular position within the source
tree, and then use \fIjmake\fR to recursively build your Makefiles.
.PP
The third component is the package generator, which is used when it's time
to build up the shell archives used to distribute your program. Although you
may use your own archiving mechanism, the one included here knows about RCS
files and will properly check out the lattest revisions, leaving your working
files alone. The \fImakedist\fR program will also perform Copyright expansion,
an useful feature when you share source files among more than one program,
placed under distinct  Copyright information.
.PP
The fourth and latest component is the patch generator, used to make updates
of your sources, which can later be applied on the original distribution by
using the \fIpatch\fR program.
.PP
Before using any of the \fIdist\fR programs, you should probably identify your
package by running the \fIpackinit\fR program, which will create
a \fI.package\fR file in the top-level directory of your package.
.SH COMMANDS
The \fIdist\fR package implements the following commands (those
tagged as \fIlibrary\fR commands are to be found in the dist
library and should not be made publicly available in everyone's path):
.TP 15
bindex
builds the \fIIndex\fR file (library).
.PD 0
.TP
jmake
a Makefile.SH generator.
.TP
jmkmf
bootstraps top-level Makefile.SH file.
.TP
kitpost
posts distribution kits made by \fImakedist\fR.
.TP
kitsend
sends distribution kits made by \fImakedist\fR.
.TP
makeSH
wraps existing scripts into a .SH file.
.TP
makedist
builds up distribution kits.
.TP
makegloss
builds the \fIGlossary\fR file (library).
.TP
manicheck
checks MANIFEST.new accuracy
.TP
manifake
makes MANIFEST.new out of an existing MANIFEST.
.TP
manilist
builds MANIFEST.new reports.
.TP
metaconfig
a Configure script generator.
.TP
metalint
a metaconfig unit consistency checker.
.TP
metaxref
a metaconfig cross-reference builder.
.TP
packinit
initializes a package (creates a  .package file).
.TP
pat
main patch generator.
.TP
patbase
resets patch base to current version.
.TP
patcil
checks new version in.
.TP
patclean
remove working version of up-to-date files.
.TP
patcol
checks file out.
.TP
patdiff
builds (contextual) diffs for the patch.
.TP
patftp
copies patches to public ftp directory.
.TP
patindex
builds a patch index.
.TP
patlog
handles ChangeLog file updates.
.TP
patmake
puts diffs together into a patch.
.TP
patnotify
notifies users that new patches have been released.
.TP
patpost
posts patch to some newsgroup.
.TP
patsend
mails patch to some people.
.TP
patsnap
builds a release snapshot with files and RCS revisions.
.PD
.SH PROFILE
Commands having a set of meaningful options (other
than \fB\-h\fR or \fB\-V\fR) can also take arguments from
the \fI~/.dist_profile\fR file, or whatever file the \fIDIST\fR
environment variable points to. Each line of the file is in the
format:
.Ex
profile-component: \fIvalue\fR
.Ef
whith shell-style comments (#) allowed provided they start the line.
.PP
Each command looks for a profile component entry matching its
name and loads the \fIvalue\fR as if it were arguments specified
on the command line. Those arguments precede any other argument
specified manually, in case order is meaningful.
.PP
Some commands may also be configured from within the profile, by setting
a specific \fIvariable\fR attached to the command by a profile
entry looking like this:
.Ex
cmdname-\fIvariable\fR: \fIvalue\fR
.Ef
For instance, assuming the variable \fIc-files\fR is recognized by the
\fImetaconfig\fR program, its default value could be overwritten by
this profile entry:
.Ex
metaconfig-c-files: \fIsuitable value\fR
.Ef
Only the first '-' after the command name is part of the syntax, the
other one used in the variable name is pure convention. Please refer to the
manual page of each command for a list of valid profile variables
which may be set.
.SH FILES
.PD 0
.TP 15
\&.MT
Temporary directory created by \fImetaconfig\fR and friends.
.TP
\&.newer
A list of files newer than \fIpatchlevel.h\fR, used by the patching tools.
.TP
\&.package
Main configuration file used by most of the dist tools to make them smart.
.TP
ChangeLog
The file where changes are recorded. Its name may be configured by
running \fIpackinit\fR, but this is the default "generic" name under
which it is referred to within the documentation.
.TP
Configure
The generated configuration script.
.TP
Glossary
A list of all the known portability symbols known by \fImetaconfig\fR. This
file is located in the dist library directory.
.TP
I.fui
Cross-reference file generated by \fImetaxref\fR, sorted by file, unit, item.
.TP
I.uif
Cross-reference file generated by \fImetaxref\fR, sorted by unit, item, file.
.TP
Index
A list of all the rules known by \fIjmake\fR. This file is located in the
dist library directory.
.TP
Jmakefile
Generic makefile description used by \fIjmake\fR.
.TP
MANIFEST
List of all the files to be included in the distribution. Usually a copy (not
a link) of MANIFEST.new.
.TP
MANIFEST.new
List of all the files to be taken into account by the dist tools.
.TP
Makefile.SH
The generated configured makefile (via Jmakefile) or hand-generated Makefile
making use of known metaconfig symbols.
.TP
Obsolete
A list of obsolete symbol used and their new equivalents.
.TP
RCS
Directory where RCS files are stored.
.TP
README
Main file explaining how to build your package.
.TP
U
Private unit directory.
.TP
Wanted
File used by \fImetaconfig\fR, listing all the symbols used by the sources.
.TP
bugs
Directory where patches are stored.
.TP
check.extra
Extra files present in MANIFEST.new, generated by \fImanicheck\fR.
.TP
check.want
Missing files from MANIFEST.new, generated by \fImanicheck\fR.
.TP
config_h.SH
Generated config.h template.
.TP
confmagic.h
Magic symbol remapping, activated via metaconfig's \fB\-M\fR option.
.TP
hints
This directory lists all the configuration hints for your package.
.TP
patchlevel.h
File recording your package patch level, should not be part of MANIFEST.new,
but may be listed in MANIFEST, at your discretion.
.TP
users
File recording the users of your package, generated by mailagent's \fIpackage\fR
command (see the MailAuthor.U unit and mailagent 3.0).
.PD
.SH ENVIRONMENT
The following environment variable is paid attention to:
.TP 15
DIST
Location of the dist profile, defaults to ~/.dist_profile. This variable is
subject to ~name substitution, even if your shell does not support it.
.SH AUTHORS
By chronological order:
.sp
Larry Wall <lwall@netlabs.com> (dist 2.0 in 1988)
.br
Harlan Stenn <harlan@mumps.pfcs.com> (worked on dist 3.0 1990-1992)
.br
Raphael Manfredi <ram@hptnos02.grenoble.hp.com> (dist 3.0 and
integration 1991-1995)
.sp
Please look at the \fICredits\fR file in the distribution source tree for a
list of all the known contributors.
.SH "SEE ALSO"
jmake(1), metaconfig(1), pat(1).