Building in Docker
Note: This method is under development.
This is a bit tongue-in-cheek but describes the problem in general terms.
The problem being solved here is how to describe and populate a build space. Here, a build space is a (binary) scalar field across a discrete, multi-dimensional space with the following axes:
- Identified by a pair of (name,version) which gives the distribution name (Debian, Ubuntu, Fedora, Scientific, Mac OS X) plus its version.
- the release of the LBNE software and identified by a git tag on lbne-build .
- the list of software packages required by a given release but not provided as part of the base platform. This list is largely constant but is weakly dependent on both the platform and the release. Each "tick" on this axis is one unique set of packages and conceptually we ignore the fact that each distribution "spells" their names differently.
- this includes peculiarities about the environment in which the build is run which is independent from the above. In particular it includes any LAN-specific things like the need to account for explicit HTTP/FTP proxies
The binary scalar value of this space is then either "true" if its combination is supported for "false" if not. This scalar field and the extent of the space changes over time as new platforms are created, new software releases are made, etc, and their support is added or removed.