7.3. Building and Shipping Packages

The package oriented integrated build environment is one of the most important and useful additions of Elego ComPact to pure version control. It allows you to reliably build the actual products you want to deliver from the sources checked out from the repository. Here is a list of its features:

Figure 7-6. GUI Package Management Build Commands



This section describes the package-oriented commands of the build system. For a discussion of the project-scale build facilities see Section 8.3. It is also focused on the frontend of the build system, meaning the commands that are invoked to build a package, and the description of the elements of packages. ComPact uses so-called target-platform-configurations (TPC for the selection of a concrete backend of the build system, meaning which compilers, linkers, assemblers etc. are actually called and with what parameters. For a short introduction of the syntax and semantics of TPCs, see Section 9.3.

To learn more about the build system of Elego ComPact, you should also consult the chapters Build Management and Target/Platform Configuration Management of the ComPact Package Manager Manual.

Depending on the build configuration you use, all the actions described above can be performed using make and makefiles. This will generally only be necessary for very special build environments, e.g. cross compilations.

Shipping a package means copying all exported files to a pool of packages that is used to cache the results of build runs and thus considerably speeds up compilation of big systems. The local pool is intended to be used by every single developer; project pools are intended for use by people working together on a project; and global pools are used for globally sharing build results. By default, ComPact uses exactly one local, project, and global pool at a time, which are configured by the corresponding entries in your compactrc configuration file.

Packages in pools are versioned, which means that different versions of a package may be contained in a pool at one time. If you ship a package to a pool, usually the current version is used. If local modifications have been made to the package which are not yet committed, this may be undesireable, so that ComPact allows you to ship a package as the next major, minor, or patch development version, or to specify an explicit version. This should be used with care, since it may violate shipping policies and effectively harm your build environment.