Next: Initial Prep
Graph showing how the various build components interact.
Edges are marked with the tool used in blue when applicable.
The build process can be split into three components: tooling, package generation, and image generation.
The tooling consists of a set of Makefiles
, various go programs, a bootstrapping environment running in Docker
, and a chroot
environment to build in. These are discussed here. The toolkit is able to re-build all of the tools from source if desired.
Package generation is discussed in detail here and here. At a high level, the build system scans the local project directory for *.spec
files which define the local packages. It then packages these files into *.src.rpm
files by either including local source files, or downloading matching ones from a source server. The *.src.rpm
files required for the currently selected configuration are then built in the correct order to resolve all dependencies. The build system will automatically download any build dependencies not satisfied by the local packages.
Image generation is discussed in detail here. The image generation step creates a new filesystem, and then installs packages into it based on the currently selected configuration file. These packages can be either the locally built packages, or packages pulled from one or more package servers. Once the filesystem is composited any additional changes listed in the config file are made, the filesystem is then packaged into the requested format (vhd
, vhdx
, ISO
, etc).
- Makefiles, Go Tooling, Toolchain, Chroots
- Local Spec Files, Creating Local SRPMs
- Dependency Graphing, Downloading Dependencies, Building Packages
- Composing Images, Creating ISOs
- Chroots