From Fedora Project Wiki

(Created page with "== Goal == The goal is to rebuild every single binary Fedora package, for fedora 21 and 22. the reason is due to a miscompiliation bug in GCC == Schedule == Given the change...")
 
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Goal ==
== Goal ==
The goal is to rebuild every single binary Fedora package, for fedora 21 and 22. the reason is due to a miscompiliation bug in GCC
The goal is to rebuild every single binary Fedora package, for fedora 21 and 22. the reason is due to a miscompilation bug in GCC (see [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728 GCC Bug] for more details)
 


== Schedule ==
== Schedule ==
Line 13: Line 12:


=== Build Initiation ===
=== Build Initiation ===
The rebuild [http://git.fedorahosted.org/cgit/releng/tree/scripts/mass-rebuild.py script] works in the following way:
The rebuild [http://git.fedorahosted.org/cgit/releng/tree/scripts/mass-rebuild-special.py script] works in the following way:


   Generate a list of all packages in f21
   use list of packages in f22 that are archeful
   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.
     If so, move to next package
     If so, move to next package
     If not, check out git
     If not, check out git
     rpmdev-bumpspec
     check master and f21 git hashes
    if master or git hashes dont match
      rpmdev-bumpspec
    else
      git merge master
     fedpkg commit -cp
     fedpkg commit -cp
     fedpkg (background) build
     fedpkg (background) build

Latest revision as of 03:14, 16 May 2017

Goal

The goal is to rebuild every single binary Fedora package, for fedora 21 and 22. the reason is due to a miscompilation bug in GCC (see GCC Bug for more details)

Schedule

Given the changes required for the above features and the given schedules, Release Engineering will be ready to start scripted rebuilds on Friday, August 15th. All automated rebuilds should be finished by the end of the weekend. Any clean-up manual rebuilds should be finished before Beta change deadline and will need Bodhi updates.

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:

 use list of packages in f22 that are archeful 
 Loop through each package:
   Query if a build has already been attempted/completed since koji changes went live.
   If so, move to next package
   If not, check out git
   check master and f21 git hashes 
   if master or git hashes dont match
     rpmdev-bumpspec
   else
     git merge master
   fedpkg commit -cp
   fedpkg (background) build
   Move on to 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 f21. This script will check that a newer build hasn't been done or started in f21 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 f21 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 that wish to do their own builds should read the Opting Out section.
  • Maintainers can help this effort by ensuring rpmdev-bumpspec correctly bumps your package's spec files.
  • Maintainers should ensure that their packages currently build from 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 thee mass rebuild a gcc build was put into place, a build done by a maintainer will "count" toward the rebuild. 2014-06-05 00:00:00 is the UTC time that builds count from

Will the rebuilds be ordered?

Currently there is no plan to logically order the rebuilds based on deps. The ordering will be alphanumerical based on package name. There are no planned ABI/soname changes that would require logical build ordering. Further, all the builds will be kept in a special tag (f21-rebuild) until the whole run is done, and then they will be tagged into f21 in one shot to minimize the shuffle of buildroot contents during the rebuilds.


Feedback

Questions/comments/concerns should be directed to [1], or #fedora-releng on freenode IRC.