Software Packages are used by ComPact in all of its application domains.
A Software Package is a collection of modules, data, and directories, extended by a purely declarative description of all elements. The product of a software package is a library of compiled code objects, a runnable program, formatted documentation, or all of the above.
This simple concept is easily understood by programmers, team leaders, and managers.
Here is a typical structure of a software package:
The structure of software packages may be different for different kinds of packages, but there must be enough unique elements to be able to identify a certain kind of package.
Software Packages are the base of ComPact's build management facilities. Using the known structure of the package and all information of the elements declared in the package description, ComPact is able to issue actions to create all desired derived files. This includes especially
the computation of dependencies to get the order of the issued actions right and avoid unnecessary compilations,
the compilation of program sources to object files,
the archivation of object files into libraries,
the linkage of objects files and libraries into executable programs,
the processing (formatting, layouting) of documents
To be able to use the products of other packages, these may be imported into the current package via an import statement in the package description file. To be able to define exactly what version of packages are to be used, import statements may be extended by a version range. The pragmatics intended by version numbers are as follows:
If any exported interface or element of a packages changes, then the major version number must be increased.
If there are additions to interfaces or elements that do not imply a recompilation of clients of the package, the minor version number must be increased.
If the implementation changes so that no client is affected, the minor version number or the patch level must be increased. This is usually the case with bug fixes.