Packaging Ecosystem
This document explains how Garden Linux packages are built using the tools in the package-build repository and how they fit into the broader packaging ecosystem.
Release Hierarchy
Garden Linux uses a three-tier release hierarchy to deliver a complete operating system.
This document is about the first tier, the Packaging.
Package Build Tools Repository (package-build)
The package-build repository provides:
- Standardized build scripts for creating Debian packages
- GitHub Actions workflows for automated building
- Common functions and utilities used by all package repositories
- Documentation for local and CI-based package building
Source Package Repositories (package-*)
Each custom-built package has its own GitHub repository following the naming convention package-{package_name} (e.g., package-containerd, package-openssh). These repositories contain:
- The source code or references to upstream sources
- Build scripts and configuration
- Debian packaging files (debian/ directory)
- Package-specific build instructions
These repositories are built using the tools in the package-build repository.
Package Flow Process Overview
- Source Management: Package source lives in
package-{package_name}repos - Building: Packages are built using tools from
package-buildrepo- Can be done locally or via GitHub Actions
- Release Assembly: Built packages are collected and assembled into APT repositories by the
repoworkflow - Distribution: Final APT repository is published and made available to users
Key Relationships
- Each
package-*repo declares its build dependencies in its source - The
package-buildrepo provides common tooling used by allpackage-*repos - The
repoorchestrates the final release by collecting built packages and dependencies - Users access packages through the standard APT system pointing to Garden Linux repositories
Understanding Package Versions
Garden Linux packages typically follow versioning like:
<upstream_version>-<debian_revision>~gardenlinux<sequence>For example: 1.2.3-1~gardenlinux0
Where:
1.2.3is the upstream version-1is the Debian revision~gardenlinux0indicates this is the first Garden Linux rebuild
When creating patch releases or backports, the suffix is incremented (e.g., ~gardenlinux1, ~gardenlinux2) or modified for specific use cases (like ~bp1443 for backports).