Eli System Administration Guide
Eli is a collection of packages.
Each package is represented in the computer by a directory.
A package directory must contain a file whose name is the name of the
directory with the suffix
The packages in the Eli distribution directory are versioned. A file named `version' is included in each package directory. That file consists of a single line that is a three-part version number. It is updated whenever a change to the package affects the behavior of that package; repairing defects in a package's tools does not require a version change.
If the package's work flow is changed without altering its functionality, the third component of the version number is incremented. When the local functionality is changed, the second component of the version is incremented and the third zeroed; when the change is visible to other packages, the first component is incremented and the others zeroed.
Versioned packages allow each user to decide on a project-by-project basis when to upgrade (see Installation).
When the understanding of a process is embodied in a collection of packages, as in the case of Eli, all of the directories representing those packages are stored as subdirectories of a single directory. In the Eli distribution there are two such directories, `Eli/pkg' and `Odin/pkg'. `Eli/pkg' embodies the understanding of text processor generation, whereas `Odin/pkg' embodies the understanding of more general processes such as linking object files, executing a command line, and formatting a document.
In addition to the package directories themselves, each collection's directory contains a file named `PKGLST'. `PKGLST' is a text file, each line of which is the name of one of the package directories. Thus `Eli/pkg/PKGLST' contains the line `gla' to indicate that the `gla' directory represents a package.
`PKGLST' allows a collection's directory to contain additional files and non-package directories. The names of these files and directories will not appear in `PKGLST', and therefore they will not be mistaken for packages in the collection. It is also possible to temporarily exclude packages from the collection simply by removing their names from `PKGLST'; the package directories themselves remain unchanged (see Maintaining distributed packages).