From Fedora Project Wiki

(→‎GIT: simplify commands)
No edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{admon/important|This page is deprecated| All Fedora Release Engineering Documentation has moved [https://docs.pagure.org/releng/ here] with source hosted along side the code in the [https://pagure.io/releng releng pagure repository]}}
== Description ==
== Description ==


Line 10: Line 12:


=== Detecting FTBFS ===
=== Detecting FTBFS ===
We will remove packages that have failed to build for at least two release cycles.  For example, in preparation for Fedora 21 branching, packages which FTBFS since the Fedora 19 cycle (i.e. packages that have a dist tag of fc18 or earlier) will be considered candidates for removal. There is currently no proper way to identify FTBFS packages. One possiblity is to check whether packages in the current tag still contain old dist tags:
We will remove packages that have failed to build for at least two release cycles.  For example, in preparation for Fedora 21 branching, packages which FTBFS since the Fedora 19 cycle (i.e. packages that have a dist tag of fc18 or earlier) will be considered candidates for removal. Adjust [https://git.fedorahosted.org/cgit/releng/tree/scripts/find_FTBFS.py find_FTBFS.py] and run it to get a list of candidate packages.
 
<pre>
koji list-tagged --latest f21 | grep fc1[4-8]
</pre>


Given a candidate list from above, rel-eng should attempt to build each of the candidate packages using koji.  Should package building now succeed, the package may be removed from the candidate list.
Given a candidate list from above, rel-eng should attempt to build each of the candidate packages using koji.  Should package building now succeed, the package may be removed from the candidate list.
Line 22: Line 20:
Email the output to the development list (devel@lists.fedodraproject.org) at least a week before the feature freeze.  This gives maintainers an opportunity to fix packages that are important to them. Follow-up on the list where necessary.
Email the output to the development list (devel@lists.fedodraproject.org) at least a week before the feature freeze.  This gives maintainers an opportunity to fix packages that are important to them. Follow-up on the list where necessary.


=== Blocking FTBFS packages ===
=== Retiring FTBFS packages ===


Once maintainers have been given an opportunity to pick up and fix FTBFS packages, the remaining packages are ''deprecated'' by blocking them, and creating the <code>dead.package</code> file in git.
Once maintainers have been given an opportunity to pick up and fix FTBFS packages, the remaining packages are ''retired'' by blocking them, and creating the <code>dead.package</code> file in git.


==== PackageDB ====
==== GIT and Package DB ====
Use the <code>Deprecate Package</code> button in [https://admin.fedoraproject.org/pkgdb/ PackageDB] to deprecate a package. This shows interested maintainers, that the package is now deprecated. There might also be a way to do this with a command line client.
Required permissions: provenpackage for GIT, cvsadmin for Package DB.


==== Koji ====
We just have to remove the existing files from the <code>master</code> branch and replace them with a <code>dead.package</code> file whose contents describe why the package is dead. Also the package needs to be marked as retired in Package DB. Fedpkg takes care of this:
The ''block-pkg'' <code>koji</code> command is used to do the blocking.


For example, if we wished to clean up git for the roxterm package we would:
<pre>
<pre>
$ koji block-pkg --help
$ fedpkg clone roxterm
Usage: koji block-pkg [options] tag package [package2 ...]
$ cd roxterm
(Specify the --help global option for a list of other help options)
$ fedpkg retire "Retired on $(date -I), because it failed to build for two releases (FTBFS Cleanup)."
 
Options:
  -h, --help  show this help message and exit
</pre>
</pre>


Koji accepts multiple package names as input and thus we can use the FTBFS package list as input.  Deprecated packages are only blocked from the latest <code>dist-f##</code> tag. For example, if we wanted to ''deprecate'' (block) <code>sbackup, roxterm,</code> and <code>uisp</code> from rawhide during the development of Fedora 16 we would run the following command:
==== Koji ====
Required permissions: admin in koji if the automatic blocking fails.


<pre>
Blocking should happen automatically a few minutes after the packags was retired in Package DB. If it does not, use the ''block-pkg'' <code>koji</code> command is used to do the blocking.
$ koji block-pkg dist-f16 sbackup roxterm uisp
</pre>


==== GIT ====
Koji accepts multiple package names as input and thus we can use the FTBFS package list as input.  Deprecated packages are only blocked from the latest <code>f##</code> tag.  For example, if we wanted to ''deprecate'' (block) <code>sbackup, roxterm,</code> and <code>uisp</code> from rawhide during the development of Fedora 21 we would run the following command:  
We just have to remove the existing files from the <code>master</code> branch and replace them with a <code>dead.package</code> file whose contents describe why the package is dead.
 
For example, if we wished to clean up git for the roxterm package we would:


<pre>
<pre>
$ fedpkg clone roxterm
$ koji block-pkg f21 sbackup roxterm uisp
$ cd roxterm
$ fedpkg retire "Retired on $(date -I), because it failed to build for two releases (FTBFS Cleanup)."
</pre>
</pre>


==== Bugs ====
==== Bugs ====
Line 69: Line 59:


This should return nothing, as the <code>wdm</code> package is blocked.
This should return nothing, as the <code>wdm</code> package is blocked.
Also check that package DB shows that the package is retired and that the master branch contains only a dead.package file.


== Consider Before Running ==
== Consider Before Running ==

Latest revision as of 17:52, 3 November 2015

Important.png
This page is deprecated
All Fedora Release Engineering Documentation has moved here with source hosted along side the code in the releng pagure repository

Description

Every release prior to the Feature Freeze we deprecate all packages that FTBFS. This keeps out software that no longer builds from source, and prevents future problems down the road.

Action

The FTBFS process takes place in stages:

  1. Detecting a list of FTBFS packages and the dependencies that will be broken if they are removed.
  2. Sending the list of potential deprecated FTBFS packages to devel@lists.fedoraproject.org for community review and removal from the FTBFS list by fixing the package.
  3. Removing packages confirmed as FTBFS from the Fedora package repositories.

Detecting FTBFS

We will remove packages that have failed to build for at least two release cycles. For example, in preparation for Fedora 21 branching, packages which FTBFS since the Fedora 19 cycle (i.e. packages that have a dist tag of fc18 or earlier) will be considered candidates for removal. Adjust find_FTBFS.py and run it to get a list of candidate packages.

Given a candidate list from above, rel-eng should attempt to build each of the candidate packages using koji. Should package building now succeed, the package may be removed from the candidate list.

Announcing Packages to be Deprecated

Email the output to the development list (devel@lists.fedodraproject.org) at least a week before the feature freeze. This gives maintainers an opportunity to fix packages that are important to them. Follow-up on the list where necessary.

Retiring FTBFS packages

Once maintainers have been given an opportunity to pick up and fix FTBFS packages, the remaining packages are retired by blocking them, and creating the dead.package file in git.

GIT and Package DB

Required permissions: provenpackage for GIT, cvsadmin for Package DB.

We just have to remove the existing files from the master branch and replace them with a dead.package file whose contents describe why the package is dead. Also the package needs to be marked as retired in Package DB. Fedpkg takes care of this:

For example, if we wished to clean up git for the roxterm package we would:

$ fedpkg clone roxterm
$ cd roxterm
$ fedpkg retire "Retired on $(date -I), because it failed to build for two releases (FTBFS Cleanup)."

Koji

Required permissions: admin in koji if the automatic blocking fails.

Blocking should happen automatically a few minutes after the packags was retired in Package DB. If it does not, use the block-pkg koji command is used to do the blocking.

Koji accepts multiple package names as input and thus we can use the FTBFS package list as input. Deprecated packages are only blocked from the latest f## tag. For example, if we wanted to deprecate (block) sbackup, roxterm, and uisp from rawhide during the development of Fedora 21 we would run the following command:

$ koji block-pkg f21 sbackup roxterm uisp


Bugs

This procedure probably leaves open bugs for the deprecated packages behind. It is not within the scope of releng to take care of these. If bugs are closed, only bugs targeted at Rawhide should be affected, since other branches might still be maintained.

Verification

To verify that the packages were blocked correctly we can use the latest-pkg koji action.

$ koji latest-pkg dist-f16 wdm

This should return nothing, as the wdm package is blocked.

Also check that package DB shows that the package is retired and that the master branch contains only a dead.package file.

Consider Before Running

Generally we block anything that doesn't leave broken dependencies. If there are packages whose removal would result in broken dependencies a second warning should be sent to devel@lists.fedoraproject.org and to <package>-owner@fedoraproject.org for each dependent package.

Allow another couple of days for maintainers to take notice and fix these package so the package repository can be maintained without broken dependencies or needing to deprecate the package. It is not good to have broken package dependencies in our package repositories so every effort should be made to find owners or to fix the broken dependencies.