Last updated at 4:53 am UTC on 15 September 2017
A baseline describes the structure and dependencies (load order) of the packages.
A baseline represents the skeleton or architecture of a project in terms of the structural dependencies between packages or projects. A baseline defines the structure of a project using just package names. When the structure changes, the baseline should be updated. In the absence of structural changes, the changes are limited to picking specific versions of the packages in the baseline.
p. 165, section 9.7
ConfigurationOfCoolBrowser>>baseline04: spec "convention"
<version: '0.4-baseline'> "convention"
spec for: #common do: [
spec blessing: #baseline. "mandatory to declare a baseline"
spec repository: 'http://www.example.com/CoolBrowser'.
package: 'CoolBrowser-Tests' with: [ spec requires: 'CoolBrowser-Core'];
package: 'CoolBrowser-Addons' with: [ spec requires: 'CoolBrowser-Core']]
Versions refer to baselines. They add the specific package names including the versions. However it is possible to do without versions:
Loading a baseline
Even though version 0.4-baseline does not contain explicit package version information, you can still load it!
(ConfigurationOfCoolBrowser project version: '0.4-baseline') load.
When the loader encounters a package without version information, it attempts to load the most recent version of the package from the repository.
Sometimes, especially when several developers are working on a project, it may be useful to load a baseline version to access the most recent work of all of the developers. In such a case, the baseline version is really the “bleeding edge” version.
An application for a 'ConfigurationOf' file with only one baseline