Development

Build system reference

Command, configuration and artifact reference for onix-build-system.

Development pagesReference
On this page

Commands

Run commands from the onix-build-system repository root.

Command Scope
python build.py repo Build all configured repositories for enabled repository architectures and synchronize completed repository databases
python build.py repo --arch=ARCH Build the configured repository set for one architecture and synchronize completed databases
python build.py repo --repo=NAME --arch=ARCH Build and synchronize one repository for one architecture
python build.py repos --arch=ARCH --repo=NAME Build one repository for one architecture without running the synchronization step
python build.py image Build configured profiles for their declared image architectures, collect artifacts and synchronize them
python build.py image --profile=NAME --arch=ARCH Build one profile for one architecture, collect its artifacts and synchronize them
python build.py clean Remove generated workspace output
python build.py qemu PATH --arch=ARCH Start an existing image in QEMU

Run an explicit command from the root of the onix-build-system checkout. A bare python build.py and the old all shorthand are not supported. The default architecture is x86_64; pass --arch when targeting another architecture.

Repository names come from the build configuration. The active outputs are onix-base, onix-community, onix-kernel and onix-firmware.

Configuration map

Input Controls
sources/build.conf Source groups, repository names and separate sync directory paths
sources/architectures.conf Enabled architecture targets and worker configuration
sources/base.list Base repository package projects
sources/community.list Community repository package projects
sources/kernel.list Kernel package projects
sources/firmware.list Firmware package projects
sources/profiles.list Profile projects selected for image builds
sources/reposync/*.conf Repository synchronization destinations
sources/imagesync/*.conf Profile image synchronization destinations

Keep repository and image synchronization settings separate. A destination present in one collection is not automatically used by the other.

Package build path

A package project supplies a PKGBUILD and any source, patch, service or install files it needs. The build-system list selects that project; the PKGBUILD supplies its package metadata and supported architectures.

For an individual package, use the Arch package tools described in the ArchWiki PKGBUILD guide and makepkg guide. The repository pipeline builds the selected packages in architecture-specific chroots and writes repository output under output/repos///.

Profile build path

A profile project supplies profiledef.sh, a package list, pacman configuration, an airootfs/ overlay and boot files. The build-system image stage resolves the profile from the source configured in sources/build.conf, checks the declared architecture, sets the release version, invokes the profile’s make all entry point and collects the reported artifacts.

The build-system image command is the path that assigns the release version and output layout used by OnixOS. An uncommitted change in a separate local profile checkout is not automatically used by that command.

Architecture and output

The current build configuration enables package repository and profile-image targets for x86_64, aarch64 and armv7h. The six standard profiles currently declare x86_64; an image target is used only when the profile declares that architecture and supplies its package list and boot files. Package recipes have their own arch limits.

Repository outputs:

output/repos/<architecture>/<repository>/

Profile outputs:

output/<release>/<profile>/<architecture>/

Each profile release directory contains README.txt and RELEASE.txt alongside the architecture-specific artifacts.

Archiso references

OnixOS profiles use Archiso. The ArchWiki archiso article explains profile layout, package lists, airootfs and image creation. The Arch Linux Installation Guide covers the base installation environment used by the installer paths.