fp-wiki>ImportUser (Imported from MoinMoin) |
m (1 revision(s)) |
(No difference)
|
Revision as of 16:25, 24 May 2008
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
Considerations
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.