Freezing Rawhide SOP

= Freezing Rawhide - SOP =

Description
Periodically we freeze rawhide to prepare for a release. This SOP will outline the steps necessary to enact the freeze.

Action
Freezing rawhide is actually a very simple task. Rawhide always composes from the dist-rawhide koji tag. We use inheritance to direct this tag at the appropriate collection. When it is time to enact a freeze, we create a "freeze tag" which provides a temporary holding pen for package builds. We then direct koji inheritance so that dist-rawhide inherits from the freeze tag. This effectively freezes rawhide and allows rel-eng to control what new builds appear in rawhide and the release. We also want to update the wiki listing of current koji tags.

Creating a freeze tag
The  command is a convenient command to use for creating a freeze tag.

$ koji clone-tag --help Usage: koji clone-tag [options]   (Specify the --help global option for a list of other help options)

Options: -h, --help    show this help message and exit -v, --verbose show changes -n, --test    test mode

It not only creates the tag, but it will also copy over all package ownership info, package configs, and tag all the latest packages from the source. The end result of running this command is a functional up to date new tag that is a snapshot of the source tag in question. Running this command later will update the freeze tag with any changes from the source tag.

For example, if we wanted to create a freeze tag for Fedora 8 Final release we would issue:

koji clone-tag dist-f8 f8-final

We also want to prevent packages from manually tagging packages for the final. To accomplish this we lock the tag with :

koji edit-tag --lock f8-final

Updating dist-rawhide inheritance
The  and   commands are used to manipulate how dist-rawhide finds it's packages.

$ koji remove-tag-inheritance --help Usage: koji remove-tag-inheritance tag (Specify the --help global option for a list of other help options)

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

$ koji add-tag-inheritance --help Usage: koji add-tag-inheritance [options] tag parent-tag (Specify the --help global option for a list of other help options)

Options: -h, --help           show this help message and exit --priority=PRIORITY  Specify priority --maxdepth=MAXDEPTH  Specify max depth --intransitive       Set intransitive --noconfig           Set to packages only --pkg-filter=PKG_FILTER Specify the package filter --force=FORCE        Force adding a parent to a tag that already has that parent tag

To continue our example we want to have dist-rawhide get its package list from f8-final now, instead of the current tag it inherits from, dist-f8. We can use tag-info to discover the current inheritance:

$ koji taginfo dist-rawhide Tag: dist-rawhide [17] Arches: i386 x86_64 ppc ppc64 LOCKED Targets that build into this tag: dist-rawhide (dist-rawhide, repo#8423: 2007-10-17 11:11:22.282349) This tag is a buildroot for one or more targets Current repo: repo#8423: 2007-10-17 11:11:22.282349 Targets that build from this tag: dist-rawhide Inheritance: 0   .... dist-f8 [12]

So we want to remove the dist-f8 inheritance and add the f8-final:

koji remove-tag-inheritance dist-rawhide dist-f8 koji add-tag-inheritance dist-rawhide f8-final

Wiki
Various wiki pages need to be updated with the new target information. Below you'll find a (hopefully current) list of pages to change:
 * Koji/CurrentKojiTags

Verification
The  command can be used to verify inheritance, as well as the   command can be used to verify that package builds are in fact found:

$ koji taginfo dist-rawhide Tag: dist-rawhide [17] Arches: i386 x86_64 ppc ppc64 LOCKED Targets that build into this tag: dist-rawhide (dist-rawhide, repo#8423: 2007-10-17 11:11:22.282349) This tag is a buildroot for one or more targets Current repo: repo#8423: 2007-10-17 11:11:22.282349 Targets that build from this tag: dist-rawhide Inheritance: 0   .... f8-final [30]

$ koji latest-pkg dist-rawhide pungi Build                                    Tag                   Built by pungi-1.1.5-1.fc8                         f8-final              jkeating

Consider Before Running
The clone-tag command can be a lengthy command. Even with the -v flag it doesn't output anything until it is basically done. It is recommended that this command is called from a system that does not have transient network connections (IE not a laptop on wireless, over the vpn, etc...) so that the controlling terminal or connection dies part way through the command.