From Fedora Project Wiki

m (→‎Description: add reference to Removing_packages_SOP)
No edit summary
(4 intermediate revisions 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 ==
Packages are often retired or renamed from Fedora.  When this happens, release engineering needs to "block" the package from being published and inherited in various koji tags.
If a package is [[How_to_remove_a_package_at_end_of_life|removed]] from Fedora, for example because it was renamed, it needs to be blocked in Koji. This prevents creating new package builds and distribution of built RPMs. Packages are blocked in the listing of ''tags'', due to inheritance it is enough to block packages at the oldest tag will make it unavailable also in upstream tags.
 
See also [[Removing_packages_SOP]].


== Action ==
== Action ==
<!-- Describe the action and provide examples
<!-- Describe the action and provide examples
-->
-->
=== Find Block requests ===
Block requests are usually reported in the rel-eng trac instance at Fedorahosted in the component koji. You can use a trac query to list all [https://fedorahosted.org/rel-eng/query?status=new&status=assigned&status=reopened&component=koji&owner=rel-eng%40lists.fedoraproject.org&order=priority unassigned Koji tickets]. This query also includes requests, that are not a block request, because there is no automated way to distinguish them. The results of the query are also available as an RSS feed, the link is in the footer of the page.
=== Perform the blocking ===
=== Perform the blocking ===


Line 35: Line 32:


Now the ticket can be closed.
Now the ticket can be closed.
Tags for EPEL are named <code>dist-5E-epel-build</code>, <code>
dist-6E-epel-build</code> or <code>epel7</code>.
=== EPEL Packages moved to RHEL ===
If a package moved to RHEL, it needs to be unblocked in the related build tag to allow the RHEL package to be available in Koji:
<pre>
$ koji unblock-pkg dist-6E-epel-build foo
</pre>
In case the package is only available on some architectures and a EPEL package is still needed, the package must not be blocked but only all Fedora builds need to be removed:
<pre>
$ koji untag-build --all dist-6E-epel foo
</pre>


== Verification ==
== Verification ==
Line 54: Line 65:


We should not see it listed in any later Fedora tags.
We should not see it listed in any later Fedora tags.
Also the latest-pkg command should not return anything:
<pre>
$ koji latest-pkg dist-f8 hunspell-he
Build                                    Tag                  Built by
----------------------------------------  --------------------  ----------------
</pre>


== Consider Before Running ==
== Consider Before Running ==
<!-- Create a list of things to keep in mind when performing action.
* Don't block packages in a released Fedora.
-->
* Make sure that you're being asked to block at the srpm levelBlocking sub-packages cannot be done, but will happen naturally when the source package no longer builds the sub package.
* Don't block packages in a released Fedora unless it is a renameWe cannot remove the package from the release repository
* Watch the next day's rawhide/branched/whatever report for a slew of broken deps related to the package.  We may have to unblock the package in order to fix the deps. Check this with repoquery:
* Watch the next day's rawhide/branched/whatever report for a slew of broken deps related to the package.  We may have to unblock the package in order to fix the deps.
<pre>
 
$ repoquery -q --whatrequires --repoid <repo> <list of packages produced by this source rpm> --alldeps
 
</pre>
to catch binary dependencies and:
<pre>
repoquery -q --whatrequires --repoid <repo>-source --archlist src <list of packages produced by this source rpm> --alldeps
</pre>
* Ensure that if the package is being renamed/replaced that proper Obsoletes/Provides are in place
[[Category:Release Engineering SOPs]]
[[Category:Release Engineering SOPs]]

Revision as of 17:55, 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

If a package is removed from Fedora, for example because it was renamed, it needs to be blocked in Koji. This prevents creating new package builds and distribution of built RPMs. Packages are blocked in the listing of tags, due to inheritance it is enough to block packages at the oldest tag will make it unavailable also in upstream tags.

Action

Perform the blocking

Discover proper place to block

The ticket should tell you which Fedora releases to block the package in. Typically it'll say "Fedora 13", "F14" or rawhide. This means we need to block it at that Fedora level and all future tags. However we do not block packages in a Fedora release that has gone public unless.

The appropriate place to block a package is at the "f??" tag level (even for rawhide, then the tag for the next release needs to be used, not the rawhide tag). This way the setting of block or not is inherited into future tags.

Performing the package block

To block a package for a tag, use the block-pkg method of Koji.

$ 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

For example, if we were asked to block python-psyco in Fedora 20 we would issue:

$ koji block-pkg f20 python-psyco

Now the ticket can be closed.

Tags for EPEL are named dist-5E-epel-build, dist-6E-epel-build or epel7.

EPEL Packages moved to RHEL

If a package moved to RHEL, it needs to be unblocked in the related build tag to allow the RHEL package to be available in Koji:

$ koji unblock-pkg dist-6E-epel-build foo

In case the package is only available on some architectures and a EPEL package is still needed, the package must not be blocked but only all Fedora builds need to be removed:

$ koji untag-build --all dist-6E-epel foo

Verification

To verify that the package was successfully blocked use the list-pkgs koji command:

$ koji list-pkgs --show-blocked --package python-psyco

We should see the package listed as blocked:

Package                 Tag                     Extra Arches     Owner          
----------------------- ----------------------- ---------------- ---------------
python-psyco            f20                                      konradm         [BLOCKED]

We should not see it listed in any later Fedora tags.

Also the latest-pkg command should not return anything:

$ koji latest-pkg dist-f8 hunspell-he
Build                                     Tag                   Built by
----------------------------------------  --------------------  ----------------

Consider Before Running

  • Don't block packages in a released Fedora.
  • Make sure that you're being asked to block at the srpm level. Blocking sub-packages cannot be done, but will happen naturally when the source package no longer builds the sub package.
  • Watch the next day's rawhide/branched/whatever report for a slew of broken deps related to the package. We may have to unblock the package in order to fix the deps. Check this with repoquery:
$ repoquery -q --whatrequires --repoid <repo> <list of packages produced by this source rpm> --alldeps

to catch binary dependencies and:

repoquery -q --whatrequires --repoid <repo>-source --archlist src <list of packages produced by this source rpm> --alldeps
  • Ensure that if the package is being renamed/replaced that proper Obsoletes/Provides are in place