From a recipe to your system

How it’s built

Every package of Zen Linux takes the same path: a recipe, a check for new versions, a build in a container, a wait in zen/test, and only then zen/core and your system.

  1. zen-pkgs

    The recipe

    Each package starts as a recipe in zen-pkgs, a public repository with more than 1,700 of them. A recipe says where the source comes from, how to build it and what the package needs. Recipes are PKGBUILDs, as Arch uses them, and a new one can start from Arch’s or the AUR’s, adapted to Zen.

  2. the dojo

    The check for new versions

    Twice a day, the dojo, Zen’s build service, asks upstream for new versions (with nvchecker) and compares them with the packages. An update, a rebuild or a change to a recipe starts there. Changes from outside come as merge requests against zen-pkgs’test branch, which the dojo checks and builds.

  3. a build host

    The build

    A build host takes the build and runs it with zenbuild, Zen’s own build tool, in a rootless Podman container that holds every build tool, so the host itself needs nothing but Podman. It sends back the packages and the recipe, and the dojo checks that every package belongs to the recipe. A build publishes all of its packages, or none.

  4. zen/test

    The wait in test

    Every build lands in zen/test first, a repository of its own. Anyone can follow it there: zenpac takes the test builds once you enable the repository.

  5. zen/core

    The promotion

    A build that works is promoted to zen/core, the repository every system uses. A promotion that would leave a package of zen/core without what it needs is refused. The recipe moves along, so zen-pkgs always holds the recipes of exactly what each repository has.

  6. repos.zenlinux.org

    The repositories

    The dojo publishes both repositories: the packages, and a database that lists each one with its SHA-256. Package files nothing refers to any more are removed on Sundays, but the previous version of each package stays.

  7. your system

    The installation

    zenpac fetches the database, plans what to install, and checks every package against its SHA-256 before it changes the system. The repositories aren’t signed yet; Status says what that means.

The installation image

The ISO is built from zen/core too. Each edition on it is a whole system that zenpac installed when the image was built, and the installer copies the one you choose to the disk, so what you install is exactly what was built. With a network, zenpac then brings it up to date.