Skip to content
Tech News
← Back to articles

The Fedora 45 Sausage Factory

read original more articles
Why This Matters

The Fedora 45 Sausage Factory walkthrough highlights the intricate process behind building and releasing Fedora's software artifacts, emphasizing transparency and reproducibility in open-source development. Understanding this pipeline is crucial for developers, contributors, and consumers who rely on Fedora's stability and rapid updates, ensuring trust and efficiency in the Linux ecosystem.

Key Takeaways

The Fedora 45 Sausage Factory

This is a walkthrough of how Fedora turns source code and packages into the artifacts you download and install. It follows the a package from a packager’s git push to a composed release: ISOs, cloud images, container images, and OSTree deployments.

The walkthrough describes how the Fedora ‘sausage’ is created as of Fedora 45, things change all the time; I hope to have time to update this document every cycle or every few cycles of Fedora releases so there’s both history and people can find up to date information.

In fact this document is currently still living as Fedora 45 has not been released yet so this post likely will get updated until the release. There’s a few change proposals in flight that change some of the bits and bobs here. Specifically how the boot.iso is produced which is a decently large part of this post.

Thus now is also the right time to let me know if I got anything wrong, please e-mail me at [email protected] if you find any errors.

Starting Line: dist-git

Things starts with a packager pushing a commit to a package.

Fedora stores the source definitions of every package in individual Git repositories at src.fedoraproject.org. Each repo contains an RPM spec file, any downstream patches, and a sources file that points to upstream tarballs stored in a separate lookaside cache. The large binary files stay out of Git; the other files exist inside of Git and thus have full version control.

Packagers usually interact with these repos through fedpkg , a CLI that wraps the common operations: cloning repos, uploading source tarballs, submitting builds, and creating updates. The important thing about fedpkg build is what it actually does: it constructs a URL pointing at a specific commit in the Git repo and hands that to Koji, the build system. The build is fully reproducible from that commit hash.

Branches map to releases: rawhide for development, f44 for Fedora 44. The hosting is split between Pagure (src.fedoraproject.org) and Forgejo (forge.fedoraproject.org), with an ongoing migration from the former to the latter.

... continue reading