From Fedora Project Wiki

(Created page with "== Goal == The goal is to rebuild every single Fedora package, regardless of content, before the Fedora 39 Change Deadline. == Driving Features == * Add FORTIFY_SOURCE=3 * fno-omit-frame-pointer * Perl replace MODULE_COMPAT by generator == Before the rebuild == == Schedule == Given the changes required for the ab...")
 
 
(7 intermediate revisions by 3 users not shown)
Line 4: Line 4:


== Driving Features ==
== Driving Features ==
 
* [[Changes/No_default_fedora-repos-modular| No default fedora-repos-modular ]]
* [[Changes/Add_FORTIFY_SOURCE%3D3_to_distribution_build_flags| Add FORTIFY_SOURCE=3 ]]
* [[Changes/GNUToolchainF39| GNU Toolchain Update (gcc 13.2, binutils 2.40, glibc 2.38, gdb 13.2) ]]
* [[Changes/fno-omit-frame-pointer| fno-omit-frame-pointer ]]
* [[Changes/ReplaceDnfWithDnf5| Make DNF5 The Default ]]
* [[Changes/Perl_replace_MODULE_COMPAT_by_generator| Perl replace MODULE_COMPAT by generator ]]
* [[Changes/ToolbxReleaseBlocker| Make Toolbx a release-blocking deliverable ]]
* [[Changes/LegacyXorgDriverRemoval| LegacyXorg Driver Removal ]]
* [[Changes/Python3.12| Python3.12 ]]
* [[Changes/RPM-4.19| RPM-4.19 ]]
* [[Changes/perl5.38| Perl 5.38 ]]


== Before the rebuild ==
== Before the rebuild ==


== Schedule ==
== Schedule ==
Given the changes required for the above features and the given
Given the changes required for the above features and the given
schedules, Release Engineering will be ready to start scripted rebuilds
schedules, Release Engineering will be ready to start scripted rebuilds
on Tuesday, Jule 18th.  All automated rebuilds should be finished prior to the Feature Freeze.
on Tuesday, July 18th.  All automated rebuilds should be finished prior to the Feature Freeze.
Any clean-up manual rebuilds should be finished prior to the Beta Change Deadline.
Any clean-up manual rebuilds should be finished prior to the Beta Change Deadline.


== Scripts ==
== Scripts ==
Line 25: Line 27:
The rebuild [https://pagure.io/releng/blob/master/f/scripts/mass-rebuild.py script] works in the following way:
The rebuild [https://pagure.io/releng/blob/master/f/scripts/mass-rebuild.py script] works in the following way:


   Generate a list of all packages in f38
   Generate a list of all packages in f39
   Loop through each package:
   Loop through each package:
     Query if a build has already been attempted/completed since koji changes went live.
     Query if a build has already been attempted/completed since koji changes went live.
Line 44: Line 46:


=== Build Tagging ===
=== Build Tagging ===
Once the rebuild script has finished, another [https://pagure.io/releng/blob/master/f/scripts/mass-tag.py script] will run to tag the builds into f38.  This script will check that a newer build hasn't been done or started in f38 since the scripted rebuild was submitted.  This will protect against the scripted rebuild overriding an even newer build done while the scripted rebuild was waiting in the background.
Once the rebuild script has finished, another [https://pagure.io/releng/blob/master/f/scripts/mass-tag.py script] will run to tag the builds into f39.  This script will check that a newer build hasn't been done or started in f39 since the scripted rebuild was submitted.  This will protect against the scripted rebuild overriding an even newer build done while the scripted rebuild was waiting in the background.


=== Status Query ===
=== Status Query ===
Release Engineering has developed a [https://pagure.io/releng/blob/master/f/scripts/need-rebuild.py script] to query f38
Release Engineering has developed a [https://pagure.io/releng/blob/master/f/scripts/need-rebuild.py script] to query f39
and report on packages that have yet to be rebuilt.  Results of these
and report on packages that have yet to be rebuilt.  Results of these
queries will be delivered to various places, yet to be determined,
queries will be delivered to various places, yet to be determined,
Line 58: Line 60:


== Frequently Asked Questions ==
== Frequently Asked Questions ==
=== When will my own build "count" for the rebuild? ===
=== When will my own build "count" for the rebuild? ===
After the last piece needed for the mass rebuild a golang build was put into place, a build done by a maintainer will "count" toward the rebuild.  2020-01-19 15:00:00 is the UTC time that builds count from
After the last piece needed for the mass rebuild a golang build was put into place, a build done by a maintainer will "count" toward the rebuild.  2020-01-19 15:00:00 is the UTC time that builds count from
Line 63: Line 66:
=== Will the rebuilds be ordered? ===
=== Will the rebuilds be ordered? ===


 
== Packages status ==
* [https://kojipkgs.fedoraproject.org/mass-rebuild/f39-failures.html Packages that failed to build]
* [https://kojipkgs.fedoraproject.org/mass-rebuild/f39-need-rebuild.html Packages that need to be rebuild]


== Feedback ==
== Feedback ==
 
Questions/comments/concerns should be directed to [https://lists.fedoraproject.org/mailman/listinfo/devel fedora-devel ml], or #fedora-releng on [https://libera.chat Libera.Chat IRC].
Questions/comments/concerns should be directed to [https://lists.fedoraproject.org/mailman/listinfo/devel], or #fedora-releng on Libera.CHAT IRC.

Latest revision as of 20:05, 24 July 2023

Goal

The goal is to rebuild every single Fedora package, regardless of content, before the Fedora 39 Change Deadline.

Driving Features

Before the rebuild

Schedule

Given the changes required for the above features and the given schedules, Release Engineering will be ready to start scripted rebuilds on Tuesday, July 18th. All automated rebuilds should be finished prior to the Feature Freeze. Any clean-up manual rebuilds should be finished prior to the Beta Change Deadline.

Scripts

Release Engineering has created two scripts. One is to initiate the builds, and the other is to query for items still needing to be built.

Build Initiation

The rebuild script works in the following way:

 Generate a list of all packages in f39
 Loop through each package:
   Query if a build has already been attempted/completed since koji changes went live.
   If so, move to the next package
   If not, check out git
   rpmdev-bumpspec
   fedpkg commit -cp
   fedpkg (background) build
   Move on to the next package

Each step will have some error catching and logging so that people can clean up the various failures for whatever reasons. The builds will be background builds, which will allow other builds done to take higher priority when a builder has a free slot. However, maintainers should take care when doing this so that the background build won't take 'latest' precedent when it finishes. Asking rel-eng to kill the scripted build will typically be enough.

Build Tagging

Once the rebuild script has finished, another script will run to tag the builds into f39. This script will check that a newer build hasn't been done or started in f39 since the scripted rebuild was submitted. This will protect against the scripted rebuild overriding an even newer build done while the scripted rebuild was waiting in the background.

Status Query

Release Engineering has developed a script to query f39 and report on packages that have yet to be rebuilt. Results of these queries will be delivered to various places, yet to be determined, broken down by maintainer for easier discovery of work needed.

Maintainer Actions

  • Maintainers can help this effort by ensuring rpmdev-bumpspec correctly bumps your package's spec files.
  • Maintainers should ensure that their packages are currently built from the source.
  • Maintainers should ensure that there are no unwanted changes committed to git but not built yet.

Frequently Asked Questions

When will my own build "count" for the rebuild?

After the last piece needed for the mass rebuild a golang build was put into place, a build done by a maintainer will "count" toward the rebuild. 2020-01-19 15:00:00 is the UTC time that builds count from

Will the rebuilds be ordered?

Packages status

Feedback

Questions/comments/concerns should be directed to fedora-devel ml, or #fedora-releng on Libera.Chat IRC.