DIST(7) | Miscellaneous Information Manual | DIST(7) |
dist - introduction to dist
The dist package is a set of tools meant to ease the construction and maintenance of portable software. There are four distinct parts in dist, and it is also meant to be used with two external products, which are publicly available: mailagent and patch.
The first component is the Configure script generator, which is a portability tool. It is automatically build up by metaconfig 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 Configure script (which is self-documented), and then run make. Your package should then build cleanly on every UNIX platform.
The second component is the Makefile.SH generator, which is a generic configured Makefile, reusing some of the information figured out by Configure. Although you may write your own Makefile and then use makeSH to transform it into a Makefile.SH, it is better to write a generic Jmakefile description, which does not rely on a particular position within the source tree, and then use jmake to recursively build your Makefiles.
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 makedist program will also perform Copyright expansion, an useful feature when you share source files among more than one program, placed under distinct Copyright information.
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 patch program.
Before using any of the dist programs, you should probably identify your package by running the packinit program, which will create a .package file in the top-level directory of your package.
The dist package implements the following commands (those tagged as library commands are to be found in the dist library and should not be made publicly available in everyone's path):
Commands having a set of meaningful options (other than -h or -V) can also take arguments from the ~/.dist_profile file, or whatever file the DIST environment variable points to. Each line of the file is in the format:
profile-component: valuewith shell-style comments (#) allowed provided they start the line.
Each command looks for a profile component entry matching its name and loads the value as if it were arguments specified on the command line. Those arguments precede any other argument specified manually, in case order is meaningful.
Some commands may also be configured from within the profile, by setting a specific variable attached to the command by a profile entry looking like this:
cmdname-variable: valueFor instance, assuming the variable c-files is recognized by the metaconfig program, its default value could be overwritten by this profile entry:
metaconfig-c-files: suitable valueOnly 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.
The following environment variable is paid attention to:
By chronological order:
Larry Wall <lwall@netlabs.com> (dist 2.0 in 1988)
Harlan Stenn <harlan@mumps.pfcs.com> (worked on dist 3.0 1990-1992)
Raphael Manfredi <Raphael.Manfredi@pobox.com> (dist 3.0 and integration
1991-1995)
Please look at the Credits file in the distribution source tree for a list of all the known contributors.
jmake(1), metaconfig(1), pat(1).
ram |