On this page
onix-build-system coordinates the repository and image stages. It reads the selected source projects, architecture targets and profile names from its configuration, builds package repositories, assembles profile images, records release metadata and collects the resulting files. The build system owns that sequence; package recipes and profile repositories own their local build descriptions.
Check the inputs first
Start from the root of a clean onix-build-system checkout. Review the selected repository definitions, package source lists, enabled architectures, profile sources and profile list. Also confirm the repository and image synchronization destinations: the top-level repo and image commands can synchronize completed artifacts.
The main inputs are:
| Input | Purpose |
|---|---|
sources/build.conf |
Repository definitions and source/synchronization locations |
sources/architectures.conf |
Enabled architecture targets and worker settings |
sources/*.list |
Package source projects selected for each repository |
sources/profiles.list |
Profile projects selected for image builds |
Package project PKGBUILD |
Binary package names, dependencies and package architecture support |
| Profile manifests | Image package list, boot modes, overlay and image architecture |
The build system fetches the configured project sources. A change in another local checkout is not an input until that source is made available at the configured revision. Verify the source settings before expecting a local edit to appear in an image.
Build package repositories
Build the configured repository set for its enabled targets and run the configured repository synchronization stage:
python build.py repo
For one repository and architecture, the repos command builds locally without running repository synchronization:
python build.py repos --repo=onix-base --arch=x86_64
Repeat the targeted repos command for each repository needed by the image, or use the configured repository stage when the full set is ready. Repository definitions select source projects; each package’s arch metadata and its dependencies determine whether that package can be built for a target. The repository output path is output/repos/<architecture>/<repository>/.
Build profile images
After the profile’s requested packages are available from the repositories in its pacman.conf, build the selected profile set:
python build.py image
To target a single profile and architecture:
python build.py image --profile=core --arch=x86_64
The selected profile is fetched from its configured source. The build system checks the architecture declared by the profile, applies the release version, invokes the profile’s image recipe and collects the reported artifacts. The profile’s packages.<arch> entries are installable package names, not package source-list entries.
Version the image set
Set RELEASE to produce a named release. The value is limited to 1–64 filename-safe characters.
RELEASE=2612-ELTS python build.py image --profile=core --arch=x86_64
When RELEASE is empty, the image version is derived from the build-system checkout as dev-<12-character-commit>. If the checkout revision cannot be resolved, the image stage cannot assign a Development version. This keeps a development artifact identifiable by the source that assembled it.
Profile artifacts are collected under output/<release>/<profile>/<architecture>/. Each profile release directory includes README.txt and RELEASE.txt with the image files. Repository artifacts remain under output/repos/<architecture>/<repository>/.
Architecture is checked at every stage
The current build-system configuration enables x86_64, aarch64 and armv7h targets. That describes what the orchestrator can target. A package must still declare and build for the architecture, and a profile must have its matching package list and boot configuration. The six standard install profiles currently declare x86_64; do not infer multi-architecture ISO support from repository targets.
For the files in a profile and the steps to add one, see Developing a profile. For package source metadata, see the package build reference. Command details and cleanup behavior are in the build system reference.