teapot-trepo - TEA Package Management
[ Table Of Contents | Keyword Index ]

teapot-trepo(n) 1.0 tpm "TEA Package Management"

Name

teapot-trepo - TEApot Transparent Repository Structure

Description

This document specifies the directory structure used by transparent repositories (i.e. installation repositories) to store entities.

Base directory

Assuming that the main directory of the repository is "FOO/" the stored entities are first sorted by their entity type, then their architecture, and at last according to their storage format (Tcl Module, vs. Zip archive). This means that the base path for an entity X is:

  • "FOO/<entity-type>/<architecture>/<storage>/"

The first two, entity type and architecture, are pulled out of the meta data contained in the archive, whereas the last is determined by the file type and translated into the path segment per the list in the next paragraph

Tcl Module

teapot

Zip archive

lib

In the following sections we will write "BASE/" as a shorthand for this directory.

Examples:

  1. The Tcl application BAR, coming in a Tcl Module will be stored under the directory "FOO/application/tcl/teapot/".

  2. The linux-glibc2.2-ix86 package Trf, coming in a Zip archive will be stored under the directory "FOO/package/linux-glibc2.2-ix86/lib/"

Note that while profiles could principally be stored in a transparent repository this is forbidden, and the teacup client prevents it from happening.

Location details

Now that the base directory for an entity is known the exact location inside of the base directory can be fully specified. This continues to be dependent on the entity type and storage format, with further dependencies on entity name, version, and its dependencies.

Zip archives

For all entities X coming in a zip archive a directory D is created under the base directory and the zip archive is expanded into this directory. The name of this directory D is of the form NAME-VERSION, using name and version of the entity, as per its TEAPOT meta data. Examples:

  1. The exact location of the linux-glibc2.2-ix86 package Trf, version 2.1, coming in a Zip archive is the directory "BASE/Trf-2.1/".

  2. The exact location of version 1 of the Tcl application BAR, coming in a Zip archive is the directory "BASE/BAR-1/".

Packages, Tcl Modules

For packages coming in as Tcl Modules the directory structure under the base directory is as specified by TIP 189, i.e.

"BASE/tcl8/8.1/"
"BASE/tcl8/8.2/"
"BASE/tcl8/8.3/"
"BASE/tcl8/8.4/"
"BASE/tcl8/8.4/"
"BASE/tcl8/8.5/"
...

and with the file name the name and version of the package, also encoded as per TIP 189, and extension ".tm". The proper subdirectory depends on the minimal version of Tcl the package depends on, information which is pulled out of the package's meta data, i.e. the package's dependencies.

Example:

  1. The tcl package doctools::toc, version 1.0, depending on Tcl 8.2, is stored in the file "BASE/tcl8/8.2/doctools/toc-1.0.tm".

Applications, Tcl Modules

For applications coming in as Tcl Modules the directory structure under the base directory is simplified, i.e. there are no subdirectories to sort the applications by the version of Tcl they depend on. The encoding of the application name and version into a file name is however also done by the rules of TIP 189.

Example:

  1. The Tcl application BAR, version 2, coming in a Tcl Module is stored in the file "BASE/BAR-2.tm".

Summary

Pulling everything together the structure of a transparent repository is

FOO/
    package/ARCHITECTURE/                        Packages
                         lib/NAME-VERSION/         Zip archive, expanded
                         teapot/tcl8/8.y/PKG.tm    Tcl Module, TIP 189
    application/ARCHITECTURE/                    Applications
                             lib/NAME-VERSION/     Zip archive, expanded
                             teapot/APP.tm         Tcl Module, TIP 189

BUGS, IDEAS, FEEDBACK

This document will undoubtedly contain bugs and other problems. Please report such at the ActiveState ActiveTcl Bug Tracker. The relevant component is teapot. Please also report any ideas for enhancements you may have for either application and/or documentation.