This repository has been archived on 2025-09-06. You can view files and clone it, but cannot push or open issues/pull-requests.
Go to file
Dustin 38b3cf2ad6 Add README 2024-12-21 17:38:23 -06:00
README.md Add README 2024-12-21 17:38:23 -06:00

README.md

Aimee OS Build Container Images

This repository contains the build scripts for the container images that provide the build environment for Aimee OS projects. Most projects will use the build/build-{target} image, which contains a cross-compiler toolchain for the {target} system (e.g. aarch64-unknown-linux-gnu) with Rust support, as well as several other tools for compiling software and creating bootable OS images.

Container Images

There are several images in the collection:

gentoo/stage3 †
build/base
└── build/cross-aarch64-unknown-linux-gnu
    └── build/build-aarch64-unknown-linux-gnu ‡

† The gentoo/stage3 image contains an unmodified Gentoo stage3 system. It is used to bootstrap the build/base image.

‡ Although the build/build-{target} image is initially populated from the corresponding build/cross-{target} image, the final image is "squashed" into a single layer to minimize download size.

Git Branches

To enable building images in Jenkins without building all of the preceding images, each image has its own Jenkins job. Since Jenkins does not support (auto discovering) multiple jobs in a single Git repository branch, the build scripts for the images are tracked in separate branches. Each branch is named like {image}/{sub-branch}, where {image} is the short name of the image (e.g. base, cross, etc) and {sub-branch} is an arbitrary name (e.g. main).

  • base/main: This branch is responsible for building gentoo/stage3 and build/base.
  • cross/main: This branch contains the build script for build/cross-{target}.
  • build/main: This branch builds build/build-{target}.

In addition to the per-image branches, there is also lib/{sub-branch}. Code shared by multiple image build scripts is tracked here. Build scripts expect the shared code to be available in the lib directory, which is generally populated using a Git worktree, e.g.:

git worktree add lib lib/main

The main branch itself is empty except for this README.