== Goal ==
The goal is to rebuild every single Fedora package, regardless of
content, before the Fedora 27 Feature Freeze Change Deadline.
== Driving Features ==
* [[Changes/golang1.9| golang 1.9 ]]
* [[Changes/ParallelInstallableDebuginfo| Parallel Installable Debuginfo ]]
* [[Changes/RPM-4.14| RPM 4.14 ]]
* [[Changes/SubpackageAndSourceDebuginfo| Subpackage And Source Debuginfo ]]
== 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 25th. All automated rebuilds should be finished prior to the Feature Freeze.
Any clean-up manual rebuilds should be finished prior to the Bodhi Enablement 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 [https://pagure.io/releng/blob/master/f/scripts/mass-rebuild.py script] works in the following way:
Generate a list of all packages in f27
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
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 [https://pagure.io/releng/blob/master/f/scripts/mass-tag.py script] will run to tag the builds into f27. This script will check that a newer build hasn't been done or started in f27 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 [https://pagure.io/releng/blob/master/f/scripts/need-rebuild.py script] to query f27
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 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 the mass rebuild a rpm build was put into place, a build done by a maintainer will "count" toward the rebuild. 2017-07-25 20:27:50 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 (f27-rebuild) until the whole run is done, and then they will be tagged into f27 in one shot to minimize the shuffle of buildroot contents during the rebuilds.
== Feedback ==
Questions/comments/concerns should be directed to [https://lists.fedoraproject.org/mailman/listinfo/devel], or #fedora-releng on freenode IRC.