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
- GNU Toolchain Update (gcc 16.2, binutils 2.47, glibc 2.44, gdb 17.2)
- Golang 1.27
- Versioned libgit2 packages
- Perl 5.44
- Lua 5.5
- Python 3.15
- CMake drop non-standard variables
- Protobuf 5.x/6.x
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
noautobuildfile 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-bumpspeccorrectly 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 buildsfind_failures.py— discovers failed buildsneed_rebuild.py— queries for items that still need to be rebuiltmass_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 gitrpmdev-bumpspecfedpkg commit -cpfedpkg 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.
