DIST(7)
π DIST(7) β Miscellaneous Information Manual π
okay bestie, gather round, because this is the intro page to dist, and it's lowkey the blueprint for making your software portable across every UNIX platform out there. sit with me. π«Ά
β¨ NAME β¨
dist</purgle> β introduction to dist
wait sorry, that's dist β introduction to dist. slay.
π DESCRIPTION π
okay so the dist package is a whole set of tools whose entire job is to make building and maintaining portable software way less of a nightmare. there are four distinct parts in dist, and it's also meant to be used with two external products, both of which are publicly available: mailagent and patch. iconic lineup honestly.
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. no cap.
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. do this first fr fr, it's the vibe check of your whole setup. β
π COMMANDS π
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 β like, keep those in the group chat, don't post them on main):
bindexβ builds theIndexfile (library).jmakeβ aMakefile.SHgenerator.jmkmfβ bootstraps top-levelMakefile.SHfile.kitpostβ posts distribution kits made bymakedist.kitsendβ sends distribution kits made bymakedist.makeSHβ wraps existing scripts into a.SHfile.makedistβ builds up distribution kits.makeglossβ builds theGlossaryfile (library).manicheckβ checksMANIFEST.newaccuracymanifakeβ makesMANIFEST.newout of an existingMANIFEST.manilistβ buildsMANIFEST.newreports.metaconfigβ a Configure script generator.metalintβ a metaconfig unit consistency checker.metaxrefβ a metaconfig cross-reference builder.packinitβ initializes a package (creates a.packagefile).patβ main patch generator.patbaseβ resets patch base to current version.patcilβ checks new version in.patcleanβ remove working version of up-to-date files.patcolβ checks file out.patdiffβ builds (contextual) diffs for the patch.patftpβ copies patches to public ftp directory.patindexβ builds a patch index.patlogβ handlesChangeLogfile updates.patmakeβ puts diffs together into a patch.patnotifyβ notifies users that new patches have been released.patpostβ posts patch to some newsgroup.patsendβ mails patch to some people.patsnapβ builds a release snapshot with files and RCS revisions.
π¦ PROFILE π¦
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: value
with shell-style comments (#) allowed provided they start the line. (so like, beginning of the line only, bestie, don't get cute mid-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: value
For 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 value
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. iykyk. π
π FILES π
.MTβ Temporary directory created bymetaconfigand friends..newerβ A list of files newer thanpatchlevel.h, used by the patching tools..packageβ Main configuration file used by most of the dist tools to make them smart.ChangeLogβ The file where changes are recorded. Its name may be configured by runningpackinit, but this is the default "generic" name under which it is referred to within the documentation.Configureβ The generated configuration script.Glossaryβ A list of all the known portability symbols known bymetaconfig. This file is located in the dist library directory.I.fuiβ Cross-reference file generated bymetaxref, sorted by file, unit, item.I.uifβ Cross-reference file generated bymetaxref, sorted by unit, item, file.Indexβ A list of all the rules known byjmake. This file is located in the dist library directory.Jmakefileβ Generic makefile description used byjmake.MANIFESTβ List of all the files to be included in the distribution. Usually a copy (not a link) ofMANIFEST.new.MANIFEST.newβ List of all the files to be taken into account by the dist tools.Makefile.SHβ The generated configured makefile (viaJmakefile) or hand-generated Makefile making use of knownmetaconfigsymbols.Obsoleteβ A list of obsolete symbol used and their new equivalents.RCSβ Directory where RCS files are stored.READMEβ Main file explaining how to build your package.Uβ Private unit directory.Wantedβ File used bymetaconfig, listing all the symbols used by the sources.bugsβ Directory where patches are stored.check.extraβ Extra files present inMANIFEST.new, generated bymanicheck.check.wantβ Missing files fromMANIFEST.new, generated bymanicheck.config_h.SHβ Generatedconfig.htemplate.confmagic.hβ Magic symbol remapping, activated viametaconfig's-Moption.hintsβ This directory lists all the configuration hints for your package.patchlevel.hβ File recording your package patch level, should not be part ofMANIFEST.new, but may be listed inMANIFEST, at your discretion.usersβ File recording the users of your package, generated bymailagent's package command (see theMailAuthor.Uunit andmailagent 3.0).
πΈ ENVIRONMENT πΈ
The following environment variable is paid attention to:
DISTβ Location of the dist profile, defaults to~/.dist_profile. This variable is subject to~namesubstitution, even if your shell does not support it. π (yes, even then. it's just built different.)
π AUTHORS π
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. π«Ά
π« SEE ALSO π«
jmake(1), metaconfig(1), pat(1).
and that's the whole page bestie, we ate and left no crumbs π β¨ this one lives in the Miscellaneous Information Manual, it's the DIST(7) page, and it was signed off by ram. go forth and make your package build cleanly everywhere, periodt. π¦π
π¦ where this page comes from
- debian bookworm: dist 1:3.5-236-1 Β· Artistic-1.0-Perl
- debian trixie: dist 1:3.5-236-1.1 Β· Artistic-1.0-Perl
- ubuntu jammy: dist 1:3.5-236-1 Β· Artistic-1.0-Perl
- ubuntu noble: dist 1:3.5-236-1 Β· Artistic-1.0-Perl
- ubuntu questing: dist 1:3.5-236-1.1
- ubuntu resolute: dist 1:3.5-236-1.1build1 Β· Artistic-1.0-Perl
- ubuntu stonking: dist 1:3.5-236-1.1build1 Β· Artistic-1.0-Perl
- Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms