Each package pool can contain many packages in many different versions compiled for a variety of platforms (or better, target-platform-configurations). The structure used to represent this is purely hierarchical and easy to understand. Let's have a look at a pool containing the packages fileio, graphics, and db in different versions:
/usr/local/pools/global/fileio/1_4_1
/1_4_2
/1_5_0
graphics/2_1_0
/2_2_1
/3_1_0
/4_0_0
db/1_1_0
/2_2_0
The pool is located in the directory /usr/local/pools/global and has three sub-directories, whose names correspond to the package names. In every package directory inside the pool, there are sub-directories for each version of the package that is cached in the pool. Please note that the usual dots fo the version numbers have been replaced by underscores to avoid problems with some simple file system implementations.
Let's have a closer look at one of the package versions inside the package pool:
graphics/2_1_0/inc
/src
/doc
/i386-linux-elf-gcc/debug
/DEFAULT
/i386-freebsd-elf-gcc/debug
/DEFAULT
/PkgDesc
Beneath the version directory, you will recognize the familiar structure of a ComPact C or C++ package in your local workspace. There are sub-directories for header files, sources, and documentation, as well as the central package description file PkgDesc. Furthermore, derived files have been built for two target-platform-configurations (TPC), and within each of these TPCs the files have been compiled with options for debugging (files residing in directory debug) and with the default options (files residing in directory DEFAULT).
There is no limit on the number of TPCs for a certain package version, on the number of versions for a certain package, and on the number of packages cached in a certain package pool.