From Fedora Project Wiki

Goal

The goal is to rebuild every single Fedora package (with the exception of packages whose maintainers deliberately opt out of the rebuild), regardless of content, before the Fedora 45 Change Deadline.

Driving Changes

Full list of Fedora 45 changes: https://fedoraproject.org/wiki/Releases/45/ChangeSet

Schedule

Release Engineering intends to start scripted rebuilds on Wednesday, 2026-07-15. Automated rebuilds should be finished before Mass Branching, currently scheduled for Tuesday, 2026-08-11. Manual clean-up rebuilds should be finished before Beta Freeze, currently scheduled for Tuesday, 2026-08-25.

Full Fedora 45 release schedule: https://fedorapeople.org/groups/schedule/f-45/f-45-all-tasks.html

Opting Out

If you need to exclude a package from the mass rebuild, you have two options:

  • Add a noautobuild file to the root of your dist-git repository. The mass rebuild script will skip any package with this file.
  • Request that Release Engineering add your package to the skip list via a PR or ticket.

Maintainer Actions

  • Ensure rpmdev-bumpspec correctly bumps your packages' spec files.
  • Ensure that your packages are currently built from source.
  • Ensure that there are no unwanted changes committed to git but not built yet.

Scripts

Release Engineering has four scripts.

  • mass_rebuild.py — initiates the builds
  • find_failures.py — discovers failed builds
  • need_rebuild.py — queries for items that still need to be rebuilt
  • mass_tag.py — tags the builds into the release tag

Build Initiation

The mass rebuild script works in the following way:

 Generate a list of all packages in f45
 Loop through each package:
   Query if a build has already been attempted/completed since the rebuild epoch
   If so, move to the next package
   If not, check out git
   rpmdev-bumpspec
   fedpkg commit -cp
   fedpkg build --background

Each step has some error catching and logging so that maintainers can clean up the various failures. The builds are submitted as background builds, meaning maintainer builds take priority. However, if a maintainer submits a build while the mass rebuild is running, and the mass rebuild build finishes later, it may become the latest build and override the maintainer's changes. If this happens, contact Release Engineering to cancel the mass rebuild build for that package.

Failure Discovery

A script discovers builds that have failed during the mass rebuild. Results are published to https://kojipkgs.fedoraproject.org/mass-rebuild/ and sorted by package owner, allowing maintainers to see failures in real time.

Status Query

A script queries Koji and reports which packages have not yet been rebuilt. Results are published to https://kojipkgs.fedoraproject.org/mass-rebuild/ and broken down by maintainer.

Build Tagging

After the rebuild script finishes, a separate script tags the completed builds into the release tag. The script checks whether a newer build was submitted since the mass rebuild started. If so, the mass rebuild build is skipped. This prevents the mass rebuild from overriding newer work done by maintainers.

Status of Packages

Feedback

If you have questions or run into issues, comment on the tracker ticket or reach out in the Release Engineering Matrix room.