From Fedora Project Wiki

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

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 clone-tag command is a convenient command to use for creating a freeze tag.

$ koji clone-tag --help
Usage: koji clone-tag [options]  <src-tag> <dst-tag>
(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 edit-tag:

koji edit-tag --lock f8-final

Updating dist-rawhide inheritance

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

$ koji remove-tag-inheritance --help
Usage: koji remove-tag-inheritance tag <parent> <priority>
(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:

Verification

The taginfo command can be used to verify inheritance, as well as the latest-pkg 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.