From Fedora Project Wiki

Revision as of 09:54, 10 February 2010 by Till (talk | contribs) (→‎Announcing Packages to be Orphaned: the packages are already orphaned, but are going to be retired)

Description

Every release prior to the Feature Freeze we retire all the orphans. This keeps out unowned software and prevents future problems down the road.

Action

The orphan process takes place in stages:

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

Detecting Orphans

A script called find-unblocked-orphans.py assist in the detection process. It should be run on a machine that has koji and python-fedora installed. It runs without options, and should take about a minute to complete.

find-unblocked-orphans.py is available in the Release Engineering git repository or downloaded from https://fedorahosted.org/rel-eng/browser/scripts/find-unblocked-orphans.py

Announcing Packages to be Retired

find-unblocked-orphans.pyoutputs text to stdout on the command line in a form suitable for the body of an email message.

$ ./find-unblocked-orphans.py > email-message

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 pick up orphans that are important to them. Follow-up on the list where necessary.

Blocking orphans

Once maintainers have been given an opportunity to pick up packages slated for orphaning, the remaining packages are orphaned by blocking them, and creating the dead.package file in cvs.

Koji

Currently (2010-01-29) we don't have a script to do this, so we re-use find-unblocked-orphans.py to generate the list. The block-pkg koji command is used to do the blocking.

$ koji block-pkg --help
Usage: koji block-pkg [options] tag package [package2 ...]
(Specify the --help global option for a list of other help options)

Options:
  -h, --help  show this help message and exit

Koji accepts multiple package names as input and thus we can use the orphan list from the find-unblocked-orphans.py as input. Orphaned packages are only blocked from the latest dist-f## tag. For example, if we wanted to orphan (block) sbackup, roxterm, and uisp from rawhide during the development of Fedora 13 we would run the following command:

$ koji block-pkg dist-f13 sbackup roxterm uisp

CVS

We just have to remove the existing files from the devel/ branch and replace them with a dead.package file whos contents describe why the package is dead.

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

$ CVS_RSH=ssh cvs -d :ext:cvs.fedoraproject.org:/cvs/pkgs co roxterm
$ cd roxterm/devel/
$ cvs rm -f *
$ echo "Orphan Cleanup" > dead.package
$ cvs add dead.package
$ cvs commit -m "Orphan Cleanup"

Verification

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

$ koji latest-pkg dist-f13 wdm

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

Consider Before Running

Generally we block anything that doesn't leave broken dependencies. If there are orphans 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 these package so the package repository can be maintained without broken dependencies or needing to orphan 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.