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 dg .
That file specifies the derivation graph for the package.
For example, the package defining the tools and work flow for constructing a
scanner is represented by a directory named `gla', and contains a
derivation graph specification file named gla.dg .
Some packages contain no tools, and therefore their derivation graphs are
specified by empty files.
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).


|